From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653406675; cv=pass; d=zohomail.com; s=zohoarc; b=GLeCEmKQ/OrRgg8do/rdy2oA4qKfII8hkQNc9qZrqWRL8dr+FXRPv/+TuAAII0VnZ5+PwrZNMn7LvtX2j9PycYpTvDzOXM0HsPcI0+27kd3YDYIw7zuVBoVkaBecpSWlImR2rBkJ/syjx2uKqIlmhP4Odt+Po06PJLclbUIhytU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653406675; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0uRayL5z567S29gFcHMdZGvSeJLG07vFw920SLWsmfk=; b=KH5HrZY/v0VUZLEb5nJeIYPd1JR5mQc75FvoQiJrdeqrf1T8T+/xmCEmcxyHVdWcvvwzy+mg/QeMyZyDIg5WpYn7xZ4z7SyOe3TJkCeRextyRLDuihvw/EedjU2ZtW9uIcMdOjINFfOq8IFMUH/iBiiP5ZcHa7CGu2OhDZDggTU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1653406675286887.7194403715934; Tue, 24 May 2022 08:37:55 -0700 (PDT) Received: from localhost ([::1]:33936 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntWbZ-0006p2-Tw for importer2@patchew.org; Tue, 24 May 2022 11:37:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39646) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWUt-0007i9-7s for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:00 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:35498) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWUo-0003IY-AW for qemu-devel@nongnu.org; Tue, 24 May 2022 11:30:58 -0400 Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFSBd8001529; Tue, 24 May 2022 15:30:45 GMT Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6pgbpq8p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:30:45 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFSHaY013144; Tue, 24 May 2022 15:30:44 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam08lp2046.outbound.protection.outlook.com [104.47.74.46]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3g6ph8x0pw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:30:44 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:30:42 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:30:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=0uRayL5z567S29gFcHMdZGvSeJLG07vFw920SLWsmfk=; b=uBtrBTVaHzUOv8XWb8Hnib4ZKz+JDsU6mQBTcCJBgt4FdAqEjzlSZq6aU5ah4EZUoM3v euo4p2/K8lVRzxnaDGuZPVVG9uRbmpbA5+oSTkFQVLUK/AGiOGR4Yit/J/863ktpfrQE 3KQqLx8K8GhjtqR1/faCVMKBHiVtSGr7O1JKpGHEKXnFR5EHwkwa+J+zV0I7NfE3NELq 7IhkEA0+8IKGK5Lunuyri3vhekWG1g6sQkvZgQm4GfCobWds3PwU3xJqGNIvpTZGlo1p MvpLFRoBsItIhJtrtNpWPZJQNqWqlPYTHSbB9gjE76rlV9aKbAb7G0RJYI2C+jIK7sg7 KA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jo71oPyTIomTwfsL+pSTpR4DZfCzMA0vEGB0g/KE4aACFOtoYi3ys89c4VyZTf3l/d+XOvT5AtsEQCEaB1rgFZ0OnEcDP68AgFbClWKgo1HPqUCsqWJSQ/UM8KiVuZojg474xQ9d76uQnl49a4i0wJdbmXXc+VIkuW9MEO9oufuLUU9V58h/jGO17ixmypG1U+YDsa/n26l/Hyg3BNCB2eKSTKXpnBIH3EDKBCTKi43D+ybakRZxuo+MiYdvj/L7kDGVWg/2EcBughfnrF2jcp6f/wJdYA19biTLIVG6e4IJgr1X5LIFSRDOAbfMfDd6Hxm4s6VnCcv9qoDPf4+cuw== 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=0uRayL5z567S29gFcHMdZGvSeJLG07vFw920SLWsmfk=; b=IBcMhGvrGearud73vw8almwVYSvNYFBc8OlZX7e7uni4c9XbTalUF+fEVcNExn9uAv3TN6FsycftvrUclOF5JqFMLJlJvwz3RaCIMmduAEqm9DSf90HLj6WabaoXFLWntkd9MuEmw6u2MU5k4peJtEjA7UIF9EOPwFc4J/idNBjsc2zgQf0ELjGLHmzrIyidGnWq6cgxi+zDxaYR4hUWU88mHEh6soI6xyBtQF2VEmMDdN46zCgBI74BLAFth9FxaDg4LhtnAd9rLdsrIsq/YH7qOYh2UA21u1nCITYbnwcnDz9DSksOvDeNL2At0PUFqz5FRpdrbbU7pHEx9D/EoA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0uRayL5z567S29gFcHMdZGvSeJLG07vFw920SLWsmfk=; b=JKsIBza0hePK77u8hwClfpnjp5jCwa9N3JxuH+mg6+lvnpJ781QyjhwqB0P5NqE3E9AMvj3noqzNM4hVzuYqnVpsLJyw8NIUAOTY5duMgrV0fDkRGDW258tPSlBSuDplDh804uEoFDddzkE9x9FwXd9dc2bTUBLfmOUFGl2Zuic= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 01/14] qdev: unplug blocker for devices Date: Tue, 24 May 2022 11:30:20 -0400 Message-Id: <55ce4f2ff38a5c38b81ceef0eb175a40ccc9ef6f.1653404595.git.jag.raman@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a0ba6173-f1eb-46bf-4d6a-08da3d9a5d47 X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: IcTpX0ZD0v7z4xkYJnaq9p/P8Llb3SDXZvdtSzQXV7otNDQpQDzgDdIZmtpWjG0WjDC3AEHWTIcY1hswKCHtCl8nVbl3sh0xrM6nyFWkKbo6YEfQOdp9kVRvApFw/h40holQnOml0wvkc6tv/ydzwHG/87gzPwnZZmmjWQUmG3GsDotuQIJAyDQUK9AB3KWoDJ1CcNE0DZCZW2cGk+Oo+md+VS1jLGi1PnCbkNx+dmsKX29WLNIwj1bT2j28WiSSkbvIIgF78Pkq+qmdvqxmgp9gUb6wmr7z6ypStECxAI0ve+SGxBYkZ0WNx7RaxGCkczU16FxGlphL1KLz6NwHQQkxqwLnhXxdJ4C2ZBThfuAtQVADE7YqOaNefqBZ6Nf69/mjfDFxVQpgvY++e/RE6kFRwcDzxj1tlX2r16TQs4QjJ+0dgeq5ZJntnqVky2yWpoXseFaMIxS+sYWaexutyXw1rwiUEFJ/0QLjfembK7nh24fjgE61zFmwJNN4D2uQ+zNbRMiZPjDT5zNoMS1QxIbv5r50zFjP3N7/jctDN+Scr4ODY77k+u1zM7e67FsLPgrcwX+ITbZV2dnVtki9gBjW3qr6PK+8gv5BnPTYuBrpkpNfFGMk3zlkmMlbe3gewyreJON7DT9WIB0ucjpE2BX7YLawWxNp2eDbrLadAkD5MHW6w+8mGuFc6JXGNM1op3ohKsezyvQMS6z9zmgYdQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(83380400001)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2lJGOKy2KGHJeajGuI923DKfMsMZqNm8ENH+DhhwbFglMrDPiLI9/5fIc4q0?= =?us-ascii?Q?jakDI7tjOMEKJnggCxwbQEsQsqPBJRWmopMVpCJohIOX9NC/QNmNZsEekpd9?= =?us-ascii?Q?fMlfpxhdUQfLukx0HYpWsRG1HpojlfpTJEnm2ggqHcu5XU3F5/YUnUDoU+v7?= =?us-ascii?Q?aJcE6jchgnpCOEaWXuVbsdCm7sl0wByh6KRsvc0fUpKohFiNuu0uH0S+JTsC?= =?us-ascii?Q?FxI75QAcrJwU2yNtjhva0SaWkMwILzDLXevR7RC25rK3RLTQVPZovJTFN05A?= =?us-ascii?Q?T1zs1lBs72gCEDn/4PN/z4bkqs80v/bn3ezhOT8D+Ma2U/tBgHA2mz8rK+v6?= =?us-ascii?Q?J16iCtnD42N2yyifeuWO8oamw3Kos3j3pnVKmUMwWgxo3/aOkuBUBM6tY/bn?= =?us-ascii?Q?j5Shxs/5W+gtC7ARYfH1ILIiHx4EefW/dCHsM/HzmRsLjsfgt3q3lA0ZbQMV?= =?us-ascii?Q?VPZhQe0lTuZNwaeOhqGsOpXRzSK4BaBos0EnGtoKWXKQ26FJBnZ8LGPGu5Fd?= =?us-ascii?Q?k/Rnl9asStnvPxusYdei1bkXMJ5Sq1PXz3bEhy1v3vX0dtuwpiUzsYDDILB+?= =?us-ascii?Q?fXtCUI2I1ztYf0jqwfLTJ/qOdLwAwD/bYd/Ihia5glyngcTz8O9Kyys1nBRv?= =?us-ascii?Q?iR5dVIFJjYui13Bsu83LIZbTJYoMyTOjuzxr+V6RElfkwhSfCPj+SW45tL3G?= =?us-ascii?Q?mjUzNrWuqEm8PSvu6wiGN32zIaiuQfjZEpGPcois4y05S5lSpWj7L2jrC/sb?= =?us-ascii?Q?7NJqBrr9S3nGXu9tUTjAW9MM3B3BUi34I8chmZyevrHyqH7LBW00dW7tfykk?= =?us-ascii?Q?wc9n36LUVHQNr6s2a2NZxn0XV1wi1HC8+gTLAcU9c7Z6WVqSDd87jNi3jWki?= =?us-ascii?Q?ssSw2ACfCJKW4EnsdumWFJKq83DByzQJe5t1uYQNTTq3BDKxMgH0CVE2NbHL?= =?us-ascii?Q?BKn6r6onqUt8v8gGSthrBagBCNUnE1FYUlqzMezuDmRrmq4Gigrg0RGLN1FD?= =?us-ascii?Q?YfZT+PSVxqXpWVuOYyxhgPYXj8YmaV07O03ephFhjgbUeHdEAZnUhocXmruC?= =?us-ascii?Q?H3m+xFPwYUDQ/qkaZCKVNbT2I0DFmBGqkzvAxoB1IZagT5OgBnOZrqVVo6yV?= =?us-ascii?Q?YtB2RiQfaOMFc/oiQtUnTDwfgz1Cvk+C3gW6tJXcm0Ncfn/Et5ALXNb0a1ht?= =?us-ascii?Q?Vwmqy6AuaH06gc901SgAz7YiiJchnamv6fnvHs2Xqm5xhq5uysYQBELUihtw?= =?us-ascii?Q?5BINfxdGaTZJUQmf5hKp1Mu8YLNDO3k9KesIryfXqDRrY6cPoW8r429pBPf8?= =?us-ascii?Q?BiCvhMKHeGNwgOFXI7JKJxv+sEVL6eeZLmeDlKe4uzA5NvoOEWOKn/s6npNl?= =?us-ascii?Q?4fkChjXGlkJ1xbc5yrqgNU8JME8vKyRWb2aDsR31yTdvVVvbZ6Ik4Omj/u6r?= =?us-ascii?Q?f9sQM+ooueJ7SZMW15bwBUuWbpeb4JYm4gJNxy6qDheb6Fy4FGEn/ejDeGEV?= =?us-ascii?Q?Q40CXIAd3r9X9/qyuNN6Zjd8jL/X/2cGPf6Kb3xKR0SkCJPXjVxiCWQJncYu?= =?us-ascii?Q?zzmt5YszVq44V8MxUkgMmDbwHXS2u1nH/9bmDpYGkCjT2UL8UEn87FGW/Sik?= =?us-ascii?Q?6KZ40qS0I+eVUfaaVFYwww6KvUeDdiNgWVDyXPtEiuZXhJVr4wPVLZ4d6EXz?= =?us-ascii?Q?mNEnpFmqaP0pkK0cmUfeAkF2Z4Ks1vNg1UhxwdZgkUkRS/CGyhygjcvFtQgm?= =?us-ascii?Q?deAHSLQQyw=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a0ba6173-f1eb-46bf-4d6a-08da3d9a5d47 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:30:42.8058 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pzrdFioKKUDb8t0CwIjm0mRYBP+AvRCYlOQGYGV1bzqPWx/HqPiln6twwdqF49UOrsUpL1a1lTQ3FjclnHQzbA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 bulkscore=0 malwarescore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-ORIG-GUID: -qz-Q-EvC5xdzEGtY_Y4ztUI7sQSQo2g X-Proofpoint-GUID: -qz-Q-EvC5xdzEGtY_Y4ztUI7sQSQo2g Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.177.32; envelope-from=jag.raman@oracle.com; helo=mx0b-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653406676365100001 Content-Type: text/plain; charset="utf-8" Add blocker to prevent hot-unplug of devices TYPE_VFIO_USER_SERVER, which is introduced shortly, attaches itself to a PCIDevice on which it depends. If the attached PCIDevice gets removed while the server in use, it could cause it crash. To prevent this, TYPE_VFIO_USER_SERVER adds an unplug blocker for the PCIDevice. Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- include/hw/qdev-core.h | 29 +++++++++++++++++++++++++++++ hw/core/qdev.c | 24 ++++++++++++++++++++++++ softmmu/qdev-monitor.c | 4 ++++ 3 files changed, 57 insertions(+) diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index 92c3d65208..98774e2835 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -193,6 +193,7 @@ struct DeviceState { int instance_id_alias; int alias_required_for_version; ResettableState reset; + GSList *unplug_blockers; }; =20 struct DeviceListener { @@ -419,6 +420,34 @@ void qdev_simple_device_unplug_cb(HotplugHandler *hotp= lug_dev, void qdev_machine_creation_done(void); bool qdev_machine_modified(void); =20 +/** + * qdev_add_unplug_blocker: Add an unplug blocker to a device + * + * @dev: Device to be blocked from unplug + * @reason: Reason for blocking + */ +void qdev_add_unplug_blocker(DeviceState *dev, Error *reason); + +/** + * qdev_del_unplug_blocker: Remove an unplug blocker from a device + * + * @dev: Device to be unblocked + * @reason: Pointer to the Error used with qdev_add_unplug_blocker. + * Used as a handle to lookup the blocker for deletion. + */ +void qdev_del_unplug_blocker(DeviceState *dev, Error *reason); + +/** + * qdev_unplug_blocked: Confirm if a device is blocked from unplug + * + * @dev: Device to be tested + * @reason: Returns one of the reasons why the device is blocked, + * if any + * + * Returns: true if device is blocked from unplug, false otherwise + */ +bool qdev_unplug_blocked(DeviceState *dev, Error **errp); + /** * GpioPolarity: Polarity of a GPIO line * diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 84f3019440..0806d8fcaa 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -468,6 +468,28 @@ char *qdev_get_dev_path(DeviceState *dev) return NULL; } =20 +void qdev_add_unplug_blocker(DeviceState *dev, Error *reason) +{ + dev->unplug_blockers =3D g_slist_prepend(dev->unplug_blockers, reason); +} + +void qdev_del_unplug_blocker(DeviceState *dev, Error *reason) +{ + dev->unplug_blockers =3D g_slist_remove(dev->unplug_blockers, reason); +} + +bool qdev_unplug_blocked(DeviceState *dev, Error **errp) +{ + ERRP_GUARD(); + + if (dev->unplug_blockers) { + error_propagate(errp, error_copy(dev->unplug_blockers->data)); + return true; + } + + return false; +} + static bool device_get_realized(Object *obj, Error **errp) { DeviceState *dev =3D DEVICE(obj); @@ -704,6 +726,8 @@ static void device_finalize(Object *obj) =20 DeviceState *dev =3D DEVICE(obj); =20 + g_assert(!dev->unplug_blockers); + QLIST_FOREACH_SAFE(ngl, &dev->gpios, node, next) { QLIST_REMOVE(ngl, node); qemu_free_irqs(ngl->in, ngl->num_in); diff --git a/softmmu/qdev-monitor.c b/softmmu/qdev-monitor.c index 12fe60c467..9cfd59d17c 100644 --- a/softmmu/qdev-monitor.c +++ b/softmmu/qdev-monitor.c @@ -898,6 +898,10 @@ void qdev_unplug(DeviceState *dev, Error **errp) HotplugHandlerClass *hdc; Error *local_err =3D NULL; =20 + if (qdev_unplug_blocked(dev, errp)) { + return; + } + if (dev->parent_bus && !qbus_is_hotpluggable(dev->parent_bus)) { error_setg(errp, QERR_BUS_NO_HOTPLUG, dev->parent_bus->name); return; --=20 2.20.1 From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653406463; cv=pass; d=zohomail.com; s=zohoarc; b=PgBi0dW2Kw+MbKWglkYOPJA+vtHlV4nwZ3yD6zOnacPVYNYIJUt/qtI5NIa7TXbNJ+S7hWVL5O0c2/12ECE/YmXyg9itQieHFUnMRQSmb+ru2l1UiG27akpx1cYi5dwMJp655x5lzldzCW6gJ28SzfD/XpTJ2Xk7PX7TpDsSicU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653406463; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ezs4Sf67fjK10WgD/7RvcUDz7aSscd9W02JfSQT2ykc=; b=deB6/aHRiZWoIZBciiDTHtNHa7NW287cd8GfMKXjD/Zd/LsjdpRnYF7cv7DbAu/5jn92lGunYZomUkzpz7TF9Mr3012AvRYY+lq2yfb9fiqy66gdEy3SupZLXAOTU5aetALeg0ZMfSstKfe2Bf0wgW6A8wTLFyR3vMVTzuDpKJg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1653406463923224.58926542810786; Tue, 24 May 2022 08:34:23 -0700 (PDT) Received: from localhost ([::1]:55570 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntWYA-0002C1-Ky for importer2@patchew.org; Tue, 24 May 2022 11:34:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39628) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWUr-0007hl-Fq for qemu-devel@nongnu.org; Tue, 24 May 2022 11:30:57 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:34780) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWUp-0003IR-0N for qemu-devel@nongnu.org; Tue, 24 May 2022 11:30:56 -0400 Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFJgGe015053; Tue, 24 May 2022 15:30:49 GMT Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6pv26wcq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:30:48 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFFrjE015045; Tue, 24 May 2022 15:30:48 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam08lp2042.outbound.protection.outlook.com [104.47.74.42]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3g6ph8x0r8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:30:48 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:30:46 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:30:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=ezs4Sf67fjK10WgD/7RvcUDz7aSscd9W02JfSQT2ykc=; b=t5tgMMmXpRvBP2cJyjBHcmYEbrGfrdT/NzKncbAou6rb2A2GD8H3tVxbzt6SpnIhhfgP J1DSRj8/EPRfWbd92qofQ/1MpejitxLOjuAA1jcIqSlDKD/EsdA/jocQ6O5zv3scYTrg ligaMUtcIiHRbavw26JvdvvUn31z4gMAebvRpfAR3WaDdwLssw7Quz2erNR468VZRo7k 9dceRyP1UhvqjQSzjqkYTl8swWubXoyNJBfPcq0sja0TBzYDVnDhVDHwoYbTHIZMwgyL rNT3+Ow69KmvzA/P3kszWfhRCdwlS+6+ffG9ws2rkzbvaEjRdbOr2xndNjl5qCd//4yL pQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gLxM4lVfnvsulH7uC6D5Y/ab6odHnNfgKXAn/zxluylkdoMgRuNsTXFHHfdiATEFXNLhPO71guhdg8XEHsd3Z97tf65D32/e89/60idMzMSgctuKHEZQOcJz0lrq5RVwqzzOVKqcMZWzv6QC+nOByxP3V5fNciyPS/t/kCNRobOeB1EIPC4ZTDneJTQTB7OpIYRYgCLnvXlc0cZxSn/oTyvWeN7V5WKIRYIKojXJyHEpj5y5c+UEysOspt4j1wzSTISF9svCA3FLln2Co59bkWOfvS4pzZMdHTw7a4zDpADql9mtNGidnaeGMmSfkMRdHD1M3SA/UtRoC9UeYEwrcg== 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=ezs4Sf67fjK10WgD/7RvcUDz7aSscd9W02JfSQT2ykc=; b=cXt7R36Ox/lQ1hcd+RAxy/JLIY6FtvI8qkqIjakWlMZ+JhwDW6HMREudlmvBiN0mo5Ga4xNIR5X8ktpVW3WwgBlpZsAyb9zmTsYZbX2r3NY0ij2C9Zq2q866inZMuoXCwtj9Etznv0IoeKngXIOGl2+CpsGDHW+OCEyDDIxDSCI1otZS+6g8nCQPV/bFOOJsuAw1YB0SNU7sx+DVjWcWoqyczklcoBHfyMOveCobqigtVUwWLq9ixUpqIVWoI3+LBOXfQ0AUuI5U80jmF6sUZbSlHO8cOndgMSoibZR26HOKoIuHsP8yzSBYg4wucJQOk4RhiV7LZ4Ujm/Up7SXzEA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ezs4Sf67fjK10WgD/7RvcUDz7aSscd9W02JfSQT2ykc=; b=RfB6RYYZJ8s9yIU0YGLwr+AVVt+wQPuHmvR3kJX0HPPy7i4A5sykORIz5eD6qExrDbMAdYWif9ANqxbFl4u9Nl+aXldEwPsld7kWB2AXsqkSkD69UQxuiSP675W9PM2BgoTfUQl0gwAiKamzZZ9txSJQTBKVOSJzK1CB5qyGDxU= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 02/14] remote/machine: add HotplugHandler for remote machine Date: Tue, 24 May 2022 11:30:21 -0400 Message-Id: <7b044dc32307309fb0e03dc6453ee075e4e39096.1653404595.git.jag.raman@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 62c35254-1611-4661-7f61-08da3d9a5f07 X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: /cH4z6guJzaRZwCuDwNHH+B2aIhO5LPJtftOni0RcRJcKXBJkV7GgelzfjEzl2oO3FrU1X9sv5ZT4f+myLtIHfTEANaNmV1FU2ZNeesy40+NRlsbzPzW3LX//QTjRN6Or3hIUyLoqcg1JPdJv4e+iiX2fj2yzD0HUpPAXFVhrrx5sjZnKWEItTrl1tZIgCVUbvNSbFcNRrClke9Hh4XSAd+jzRlw/84hrDiffxY1Qsd7FOaPju1JyxNTq0aXh037/939MKRco4cOUYM87oXCNPjbl831fUOdSZk7Q34RlgEoW9N5gi89fCtd44SGzlbCEdrVG3ZG6Ns1ymYoipk96icU4sNbAwgx0OpMiPvB/WegKJBrT5brvtYmG6HgEKDytWMjAyhAuLU5rSWS6yXcJEGaNE4YTjol6NOna7Zu9Uc5eR549xj8FGws2oZyZqufeDP6LVwu31SxFvnnI3x7fZE3hJ2Gmb7gaqR09MUi0anWxtw+jDgMWLT0c1q1KSBVqI9c3stHr3CrVuS9g0MXZPYF+qo0N1DZgYfdmva9FxA5zZ5mbEfGC7juFE7VP0JmuGKExQrCFhLiVHTLojRJeeHngv/YcSqMmIom3B52HupOgfVBa2iEXIyi+myE6GP+K6rTrtcHZ7Jti1Xi+6yflLr82fUEUQfo83cnWjamY+KYVSqZldd4hXCih0UhM5k+AmAaXqyNCNQOD2BekNlVQQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?r+5P0XvcAEhlpC+31PjAzBfGduiespRcTqHzV9z9oS0XzYy6reOeQhg2qKAv?= =?us-ascii?Q?hbmLsiawtcD2pqtlugb04cI5w3sbo75TUjXZgasN6XkCwCgaMNvuiWIEbVPi?= =?us-ascii?Q?MM0v/a9QV5awyjiL9iMeK8sBxQBRhRTgkg1xUsgDU59g6UV0RWv51JfJUqBH?= =?us-ascii?Q?qQLZHorpa+My3Y+UNDy1vfiWa9OGiThCBLaCIfC6lzefLnp70vXosaI/2lZq?= =?us-ascii?Q?DNOATiKZKApiUFHrDgnmBCeQWcSC38oTMtkqNmddz42TddPKOd6Ci6NV/76A?= =?us-ascii?Q?C9rUX6Haq9lt25x7NSnBaA/LasM4Hyzj2XV40z2ougJsqTlCP60r41uhGQyx?= =?us-ascii?Q?EP9ruGGNMfdY76GiWqQTh+AQ0B5UiZOSa0oL74xvt0mQXcUXAzQ1WUAzHD+4?= =?us-ascii?Q?K1tfZH8VHB8CJMMs1GsWwJ+4M6ACZQbsTuUmk0wYZbQFgoh2iLkHeqlo2nha?= =?us-ascii?Q?D7AD5jOrdNquxQy+DT5Ty/31c2j5beRGYSVEy0CY8pcGPTv1RHjTHG7eJ7uB?= =?us-ascii?Q?RAtM/cAEkKq2hR0yeTe5+l1o2If2O1ccxVLXL19CczLkjjQExBCbRHr7nZZr?= =?us-ascii?Q?ldvY6PHZ8npaMyWd3mWxw7Y0ZsuTHlrJcqFNBiBQpxtglDrhLI6oozYnCgqq?= =?us-ascii?Q?LQTpE19phE6n10ZC7r5rNn8I5zIoU+y5Zjv0R4WOT96lBZHAtZFJ50V/Uj1o?= =?us-ascii?Q?SpB2/DblZT0iQysPMSZ360vqyMNfYg24b2A6/a4orEI6FcbcEYKc7bCbqI8G?= =?us-ascii?Q?sYdKz4AZpM7XBlXJcgGJLyEJ/1Acarhyduw7qmtB5UzoUhz2qy0SNzh9o53t?= =?us-ascii?Q?yNmn64rQ/kM+k8+TpWxGVx+pueCOs1LHm3s9VctAP2Sm6HnEvtrWb30XGycy?= =?us-ascii?Q?X5YrVMuEdz7ckByTFld4dsJR1b7cbQtbKsN2mhkH3aFlNQsIghV8aRbNFsmE?= =?us-ascii?Q?zwhJm07cm0iJUgoTfFSF7cyWhW9TPOCV1TUhGWH6Irbh4PWr6SYlNoSS9t3t?= =?us-ascii?Q?nqiho5robDcOAFgDIx/S1Dm/m5FEq9tV6vP/mdx+Vk/N1cQtkRTgc0US9pjq?= =?us-ascii?Q?9eYAX7HZjEVoFQZOpCRDxA7POSK5TvkLF3vk2VlJcihcuAkBeXy/axrWGi3+?= =?us-ascii?Q?NAX8zOnBKtwM8pArqVKflbZTUUIChdJCI61uKrubGf6qheQzBiVUJdAfF3TR?= =?us-ascii?Q?ZOs82XqoLNH/vCbBpm2DeRG8MUpOOsRJJdem7nV7plgSLbY9uWA3RsrY9G5m?= =?us-ascii?Q?IVmur2iskHedz4GYiK/+s4wjhcZgXQ/UDRo8PnVEt2LnuAjJw4mLDCVSXGG7?= =?us-ascii?Q?uQrxNXEWLkBImfKyYwuz5f6UdTAfWiIXrPxlxcxFoij0X6nrg9unTOxF7T2v?= =?us-ascii?Q?UFzyJAa2P+2AndzcccgKhpTNvmPfzHrUTX+FJFsN3QrPdoFmwjX0c9dEAU5J?= =?us-ascii?Q?NTDwF20tGmfHgKUr1JCQr6njxHfKCBl46PyCSRqcKoZqP0t6xoM/BBJO2klL?= =?us-ascii?Q?4NOxYdFSNVak62j2sfdpexUIpKB2rcvm4x89o3BDB/UIDlYcf1JzZI1deNAE?= =?us-ascii?Q?CE7ya5nSH9Ibc0g2RqR7OdsLeo2m9i4bxy0WAX7CZ66+829aGwNtRCUfuyPK?= =?us-ascii?Q?k7texV1bvayREkGuZ50RtzmzYK2h+eWFGs101SiJCydDNgg9q/PUy0tLQasq?= =?us-ascii?Q?jVw8P6XVX6FJ0JhQceSGkyTIAfKU7o2MGS9ifRWWJ3f3gYq2SD1IE5ENS5F2?= =?us-ascii?Q?/cqWo90Yiw=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 62c35254-1611-4661-7f61-08da3d9a5f07 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:30:46.7430 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6rs3hxSWQe+pNA++a725Ov/kjSWD6IEEIN+seE72H9vkLY6Q90aHvd7XxR/gDNconnmO/dx90DXDqd835r8hbQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 bulkscore=0 malwarescore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-GUID: 95WGRL0njyJgU-uM2kL6tG48frVzSqe1 X-Proofpoint-ORIG-GUID: 95WGRL0njyJgU-uM2kL6tG48frVzSqe1 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.177.32; envelope-from=jag.raman@oracle.com; helo=mx0b-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653406465318100001 Content-Type: text/plain; charset="utf-8" Allow hotplugging of PCI(e) devices to remote machine Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- hw/remote/machine.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hw/remote/machine.c b/hw/remote/machine.c index 92d71d47bb..a97e53e250 100644 --- a/hw/remote/machine.c +++ b/hw/remote/machine.c @@ -20,6 +20,7 @@ #include "qapi/error.h" #include "hw/pci/pci_host.h" #include "hw/remote/iohub.h" +#include "hw/qdev-core.h" =20 static void remote_machine_init(MachineState *machine) { @@ -53,14 +54,19 @@ static void remote_machine_init(MachineState *machine) =20 pci_bus_irqs(pci_host->bus, remote_iohub_set_irq, remote_iohub_map_irq, &s->iohub, REMOTE_IOHUB_NB_PIRQS); + + qbus_set_hotplug_handler(BUS(pci_host->bus), OBJECT(s)); } =20 static void remote_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc =3D MACHINE_CLASS(oc); + HotplugHandlerClass *hc =3D HOTPLUG_HANDLER_CLASS(oc); =20 mc->init =3D remote_machine_init; mc->desc =3D "Experimental remote machine"; + + hc->unplug =3D qdev_simple_device_unplug_cb; } =20 static const TypeInfo remote_machine =3D { @@ -68,6 +74,10 @@ static const TypeInfo remote_machine =3D { .parent =3D TYPE_MACHINE, .instance_size =3D sizeof(RemoteMachineState), .class_init =3D remote_machine_class_init, + .interfaces =3D (InterfaceInfo[]) { + { TYPE_HOTPLUG_HANDLER }, + { } + } }; =20 static void remote_machine_register_types(void) --=20 2.20.1 From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653406963; cv=pass; d=zohomail.com; s=zohoarc; b=jS1Xr/Pv7sEOE4UB4IujOf0CxdOIUFFp9cd+U3uzOxWuybOX6KbnIXc5jWIOZiJ5zldtMOjWa9tbpaWUmtdN8Vw4o9a5Er6elEESDN0d1LhJVy9WmYz36A9t31/E/w7ult/Y4dKRKZlvgg0gALP3zVQFRs/7vAVpIi9zH+y2HRM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653406963; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=PEYd92Oj4S4zXZHW4xEXu9y46a7Vp5wnXLld9qaD9Ys=; b=XmuNPUgOS7Juqoa32TEr/c8HCPHVUN70Mb5GUc6nSCfuz0StXL6miF9ao/HP/o764RtLKKGDYAcTg0j/emTgo4ff6XYuaA/TmLQ8cav80eMxFdyCD4vgmFB0BBmxbW2Pd5aX5PW/UHSoanofI4wi1yCoQXdKfg3UxICgDhlAhXM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 165340696367675.17702684066592; Tue, 24 May 2022 08:42:43 -0700 (PDT) Received: from localhost ([::1]:41950 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntWgE-0004Cq-GV for importer2@patchew.org; Tue, 24 May 2022 11:42:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39752) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWV4-0007wY-Jk for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:10 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:12430) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWV2-0003PN-Ap for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:10 -0400 Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFETSj009629; Tue, 24 May 2022 15:30:53 GMT Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6rmtxrh6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:30:53 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFGKdw040364; Tue, 24 May 2022 15:30:52 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam08lp2044.outbound.protection.outlook.com [104.47.74.44]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3g6ph2h27f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:30:52 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:30:49 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:30:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=PEYd92Oj4S4zXZHW4xEXu9y46a7Vp5wnXLld9qaD9Ys=; b=IdFAbH93PmRiCbpyTq5R0UwRSe8f18zWoPloE0ypbWy72Gj0zJ/K6gP4MGSpwU8moQAb C/Ac73ZQo7+LRAYCCX9Xo0apEiwzISNhhV6JoDTbnrYSboZtfGgWp7UbY77+XG6RY8s7 XWcWopFFrChWgcR2FsrKhQl3Apb2kp0ajs4n1ge+tw6NZ8innOW23xQvtbPfzLt3AlAB JnEh2C0dClb4b8p1XZZ90opcSljhPw8T+zBzJnpPtObWhpGaDCt8rsQvMxSl84iK370Q eD2qaf1RXAmHwJw/Un7fvv25Fsnbd+i8J3CINf5Lr3o0KNzcCMqqDwpfV1EFJdHn6+JX aA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lI+qCPRmtwpnlEoyDAYQ1eUJaNKPq9ZDKAV0f6iqkv7buC8l6Ve1Op+DOL7eYS/U/h2CjDLLal1fFSLOMhXtr2Tt9exFXVH8EEnavfscF4D8fhODXGtgo3e09n4oh4jzAwc3xp0GX1Pha0vEAr0lggWdS6V+OFwyK6D94uB3thVnnUCczF/OVIk+JzQq3cye+Llj6gi5ivgHPGtf6Tt/7/1zK8jPwjYlhzWKeALdX6VqiXz7JaYwUUmZhwOlOky7z7j5YTcPq17LfB9RXca1Uh9g6JS5tmgttbpSZUxMMoz1TXM+Qdxdv736QbkvjRWniThtulGD+ncUMre5RNRrAA== 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=PEYd92Oj4S4zXZHW4xEXu9y46a7Vp5wnXLld9qaD9Ys=; b=icx/2JpG6EF6bTCLbCz8g2reKLy0rhhUxbDmKTkxMUC6u8QtPONUgrIu7jrUFZrgZfw9N8ofNFOv2AiULMJpENTpUQq4mKMnd/BUa8ovJ0idHTAfakJdqN4zzAed4RJbzmllvCk/loPy3d7sZNTMmrI0Wd7yiuUkvAIvQn4tlgRxQCpYHoJXqgwgW3PjqYCEcjBhWUTohw/SahCiBCO/+oQCT883WMJ+8+Z88WOQMbKTEFz4jaotXUvaofq4gkuyjFjOUMOKDBLQth8s/DQE9utWmbQ+GWMFOk1bLZ+qhF3XM0bgI7sUTQV5ysEyFO90My4SbxrhG7fAGENMHD7iYQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PEYd92Oj4S4zXZHW4xEXu9y46a7Vp5wnXLld9qaD9Ys=; b=rCEctZ6aqC8EmS1UilIzxch/t9zLG9peq45HSv35o1Qh/0yPcfG9Q1O+9TLOmyMt8DPWaLl4wXIBGvS6TbbVpKvqNIyI4OUF3ciwt/qaBIThnXzIddAXyE4A5quo16nrqL/zw1R0y28KOF9rNFjG8gJbpNDIdfBHCGSSznFcIGY= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 03/14] remote/machine: add vfio-user property Date: Tue, 24 May 2022 11:30:22 -0400 Message-Id: <3743013d991f74576e4b114f3839cc858408fa91.1653404595.git.jag.raman@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3dd424a3-5d65-40cb-92c1-08da3d9a616e X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: /BItTB7cxrbYnuR2gMIvGkgh9D8mNwGAPzp70UYwYhJJHPZ2gwRI4o+6kZYm94yAsTgytGCJLDCQefDkg53Nm1FRw89DG601V99Cze6FrSDAFdMV4Lnimrw4Afbg+qxIIbRrYvzfRNGQEPpUpD8N+ersqN5F3c4DnfT5v8q1ukUVwPAtyUm7Qxj3viPED0W2WoaOmbCUr0j67hoSHdu9jWlT2LrcHFqJavBi0zgzOd8twlgn990Kd7EhbTzZ8DQRbwCjxpou34IuPfz0R2lYDKAXhvTGire7rL0xPpCapGSqHxVNjHMFJyk56sx+B74qxPldDFESswziQ5uBXG0jDa9ZoEbRkgf9lsFBACGl7o5KFhTGU/5nJdSgmu2Zafj0zV2OXD2X9tWz43rJ1VJa2MdP+qcvYA70OWLNSa00Qraw7rdM2Lf2RNA7ivcWh0n91kYpQAPH6cubZdJ9Fm88mKiiv4mjmOxMHkUUUxiJ79Ghyet6sXDF0It5EuJmWvfjC9YPLszvrazJqERTKPiPJhSgVC5UP076De6wRJMJFgFosfl0/0xnwKD1SijAa8LcK64sheSVFFbPw9bLn4dBo07ddkRJ4IxtYwt1i8QsyuvrhY2bcXv15YWe2dH0lNy1XuzwpucLbrztuVkBi1Cm84EcGU6hQVfGsx+04BD/LsuUSCIOeLhudgMagopYHAd08VX8MQvAXtVKzrlA1xuM1A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?OlRcuciIKZHwyCBnjnEiGysL+SojYvUbVBpJKREw6iQC/fTt5QNH//01kJrg?= =?us-ascii?Q?6Bo++hzSz/0XabJiDU5C8x9jc58x+6HZwyMwMJZmX6MVSnfKVCnec6lT0xJ1?= =?us-ascii?Q?WRJSgGYwtw1z8Vh7TuMrau1SUF8i4Nkji6KSXbzppQdjwUJxpyPA5a1O+GPo?= =?us-ascii?Q?ekdm3rO2tPuBPrJwN5Ne+50MOtZW7/twZBHo4wz+eohSI3RJUjnImgEjUZEH?= =?us-ascii?Q?zC+vpiVc95aijTjMKtHckBckp+OQfjIaVfv/q21nuO4kexYcfAlwV7LJSYze?= =?us-ascii?Q?ykXP0+fyzaxO5S5eQAi9sbG9kurOegIwrEWFLT/OlSDHZEMftX3ZSIL993lH?= =?us-ascii?Q?zGRdj7NecganKlpijQJnt6rnkKKMv3+nCLKjQFlg82jatYEW5GYbi7LUJRkP?= =?us-ascii?Q?13v+11+5EDMQRY8/HuMnGH8QKuqtHNTCaVOoDJ0Mx88QalvqkeIuWH9+/rgJ?= =?us-ascii?Q?lQvGNWUnrabhFJkSRxSFwwJdevSRJsqdcliFEXgqFJmN6oTWpI76J1Djc88w?= =?us-ascii?Q?W/k3ElDNniNY90uwYZ4zIl3JtnL0YaWV+n7KcxINh5JjDebtfCGOsS3HHQwC?= =?us-ascii?Q?CNEPu8Z2wJKyFovW3T7DRnlj7a+l2x2jErtzIxVC1TYj/DLERHO0rLWlRmI+?= =?us-ascii?Q?P4R78JWoxtJrvdHN8bdA7ieUDNGYlAygoT9z24B4qsnT4Xw9MPnCdO+ub94/?= =?us-ascii?Q?I0kqFAWVrqLzXNmQjCTfyuVRgy0m+7GNWs8b7T4M//aEk//6vLoPVBozPUIN?= =?us-ascii?Q?yZV16Oj/l0fkRKY9yBRz5fV/euZCxvRyNCZXMfTfdeQyWvfwENgnWNoqURvz?= =?us-ascii?Q?vAGHGMnuiCyaJXZ64ADSS/q5wCcbpFvu22lvPqjPEAzba30uP8/EIxzvnmGq?= =?us-ascii?Q?y9+WQarmtaM4wvl9kB4xW0LAoHg3JjCvDEwQ9rdKzLSkBgwrvNmhH70elgry?= =?us-ascii?Q?rJJ3MhA4k7Ef2m7BMnz/4Bs+Ty4vF7k/25yCA44mD8hph8WbqxKPp4hzHtS4?= =?us-ascii?Q?5HC/M5SxFbynMnPGzCP7UhEA8WI3QVnnt+c3zSL2NnzSCCYa4pcoR3Jhlw1V?= =?us-ascii?Q?0VJfuIud47XeSPsyEpaDuIO8Ogg65fk1IkzFqiNQRzwyu3+24h7VNESkVU1P?= =?us-ascii?Q?UUhVNX9Joeoi264EgIdWhdrI7ynsI/4qjwFZnX7azQXgKfX4j1uzHY59Lj7x?= =?us-ascii?Q?GDWNRzMr9dwMWlh1l71pxVJfRsB654ojGn06ccjyjHUK7YPAxIy18IdXAHjF?= =?us-ascii?Q?rScgll6QOeGKCylMFt0cvL4bXyc5LMoZUmytt4nGt4fG7R2KUKCCdsFj45vl?= =?us-ascii?Q?Rubayu+zB31JV7cJPOSZVslOL2zOxtBOuaX6wcOdn8uR1Jcrgzyk5MH5LYS7?= =?us-ascii?Q?lnn44vaFKpvfhzhrYaW4D+sbzfyjYzJEedt2TRun7XKVnnGE8YMsGJs/9Q/3?= =?us-ascii?Q?Rm2+7Var9Xl0VfLqHqcuxjgCE3T14i6ZdHn9tWw9yK2reYpLt1jsihKccvj1?= =?us-ascii?Q?U2/vfyRZXCwmoqEWM2xD9tLbllRAwa2q6+kqeXsN0B37hnO7DGDaT31mBibv?= =?us-ascii?Q?al9ddMXPWP+PXf5E0M9d2lvGFQTliKgPil0HuTAHGfSRxxVTcowQTJUcd7DF?= =?us-ascii?Q?nqqKFM88769QvY+9Tjitr/Xvj48rQUN2DfHSZ0EH5qXfy/oOL9Ssp3J9qZ2u?= =?us-ascii?Q?KnsXImOgmD8AerxpAFpHDUNpQEn7ICATaPhJLb9k8OOlmyl66Bnyh1ICOV0L?= =?us-ascii?Q?5opcWfC+0A=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3dd424a3-5d65-40cb-92c1-08da3d9a616e X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:30:49.7428 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lghO2KMPEsmozKgBCJORo7u5v4x3r0t2aKCZisDh/AZD5oQdTI6nJguAhGgrOYG55KmlV1z3qV/eO++TshdUHg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 adultscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-GUID: LSPaUW0vE5vYLethJoL-mpta8rj03NDh X-Proofpoint-ORIG-GUID: LSPaUW0vE5vYLethJoL-mpta8rj03NDh Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.165.32; envelope-from=jag.raman@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653406964086100001 Content-Type: text/plain; charset="utf-8" Add vfio-user to x-remote machine. It is a boolean, which indicates if the machine supports vfio-user protocol. The machine configures the bus differently vfio-user and multiprocess protocols, so this property informs it on how to configure the bus. This property should be short lived. Once vfio-user fully replaces multiprocess, this property could be removed. Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- include/hw/remote/machine.h | 2 ++ hw/remote/machine.c | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/include/hw/remote/machine.h b/include/hw/remote/machine.h index 2a2a33c4b2..8d0fa98d33 100644 --- a/include/hw/remote/machine.h +++ b/include/hw/remote/machine.h @@ -22,6 +22,8 @@ struct RemoteMachineState { =20 RemotePCIHost *host; RemoteIOHubState iohub; + + bool vfio_user; }; =20 /* Used to pass to co-routine device and ioc. */ diff --git a/hw/remote/machine.c b/hw/remote/machine.c index a97e53e250..9f3cdc55c3 100644 --- a/hw/remote/machine.c +++ b/hw/remote/machine.c @@ -58,6 +58,25 @@ static void remote_machine_init(MachineState *machine) qbus_set_hotplug_handler(BUS(pci_host->bus), OBJECT(s)); } =20 +static bool remote_machine_get_vfio_user(Object *obj, Error **errp) +{ + RemoteMachineState *s =3D REMOTE_MACHINE(obj); + + return s->vfio_user; +} + +static void remote_machine_set_vfio_user(Object *obj, bool value, Error **= errp) +{ + RemoteMachineState *s =3D REMOTE_MACHINE(obj); + + if (phase_check(PHASE_MACHINE_CREATED)) { + error_setg(errp, "Error enabling vfio-user - machine already creat= ed"); + return; + } + + s->vfio_user =3D value; +} + static void remote_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc =3D MACHINE_CLASS(oc); @@ -67,6 +86,10 @@ static void remote_machine_class_init(ObjectClass *oc, v= oid *data) mc->desc =3D "Experimental remote machine"; =20 hc->unplug =3D qdev_simple_device_unplug_cb; + + object_class_property_add_bool(oc, "vfio-user", + remote_machine_get_vfio_user, + remote_machine_set_vfio_user); } =20 static const TypeInfo remote_machine =3D { --=20 2.20.1 From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653407228; cv=pass; d=zohomail.com; s=zohoarc; b=WZVkPJ019zz41LR/Z3aMAW8/AG1U2OZi/LV9B1afOK+wuE1fCr3mrKp8qB9Y9ED3OBl29BQBFDUulcuSUfMjukJjdUv6+WBg8y2YZsIZH5CAHbZVnud6TSqG5HA5uMESEMKIZmsLLfybZh+5/GMsVxkblzXEDJUV6lDsZJWmLS4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653407228; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=XjbUDJSsQG+4X535tz3BzbjtqJBfYtJlCnSMhr4Uu2Y=; b=AQfB+1YZ1FQr3VTE715mDC++mHcs6HDdal+fOyHzT7cGvPpm4HOcTbTULX8WgqpCPgQ/3QbMDcRWGbo8Rhu2dSvy+5Ft5jcvPXSJXnSILDuWU/Lz0nw3RIt9V49BD4aXZLk3JNivLse1h1nuZqoh3VXCPD9/kwCnCnV5Wrgg4XU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1653407228296920.7659807450311; Tue, 24 May 2022 08:47:08 -0700 (PDT) Received: from localhost ([::1]:50630 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntWkV-0001th-7A for importer2@patchew.org; Tue, 24 May 2022 11:47:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39834) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWV8-00084Q-Ag for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:14 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:22228) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWV5-0003Q6-Pa for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:14 -0400 Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFQFWo001866; Tue, 24 May 2022 15:30:58 GMT Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6qya6kkv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:30:58 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFSPgP017641; Tue, 24 May 2022 15:30:56 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam08lp2049.outbound.protection.outlook.com [104.47.74.49]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3g6ph2k4x7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:30:56 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:30:52 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:30:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=XjbUDJSsQG+4X535tz3BzbjtqJBfYtJlCnSMhr4Uu2Y=; b=LxuqLcp71TbHKo85zW6nZWIdTgGTJRae4St5gzYhlieeTR9neTanzZ4mJunlsCCRsLa/ OrdE4B6PQwkTEqYfg/jZ8TXBSpFj08sWjfdBAiXX3JwxGtqHRGBEjkBaaPQ7ZnLj3ZXw VCi0SCKuntHoJ2ApT5pl89t4NpjqR1vhaRAgO65jw2PwF63bLpsO5pgkeMahM6aZeoqP G/rPbsM5xfFgzzG04lJeNw3iI2EZXDErwBsUyF8IA/v9PG5SKRcVxHZSJEAXRK1gqPGe G/M4YM/hAWtCZWI7F5zqDJ5mR9lnKWwxNtvbZwGiX3CX8vErELIS5Lmv3LApM9zBG7ys rQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V2qVu/anCTMaPagmjaMG2oByBftIM7MABEtXNHqMVOSNNzf3dxW8XoQr7YcOwEUBSc045ocwvV50u9pnNtRiWzJuFkg4l8Lu0s8MxG2DiZVcLrLTEczViy/RjzutBjwmH9smQDhXf8f7tUyJ0Ws2y/0JIiWmRgzrmWbgbYehjZRiLuiPixziNlbBKYXiya12eaRTx/WL2dh32XyZiR47rzu1sPrrj57HdRqLLAtH6QC52bdDT6mMhcSFw+GrsXY88/bt2+TQbBCwYtchGQQ8TVap0M1lPiIFqKTfarQksJp0rhrsABcmYElVefPUeIHmRtBaxepQEZuEKkqJ5ODU0g== 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=XjbUDJSsQG+4X535tz3BzbjtqJBfYtJlCnSMhr4Uu2Y=; b=kaZ2oa2w9hv/7Q67FkJ4lMqsYQKoxHa9NOUdUyZTHwerzLOUhMxF2T5pBL3oLSEGKQL3WEn3w73nfCuZ0d8TSu0cUnLQSRT4z13Pv+2J8EkgGSzcNMhIktAnG4sqZNaD41dzHl9L9W1ZpLM8HokvMIM5Q0zmJvYoYV3mYRu2yFt1jPd4TUSxNyiTsKNEujDzQtM3lIC9fBJHlL5vM6JnvueVCOCyaG1Bp3KHULGvkIK/SnNPgfvlj+yV3OSHJ0TnWkdOr9pqWuep1GER+E+l0COYOebIu7f2fUJTbBqcjxjrS2diaYI9N7EkS5VOMFOGBptCp9PW9w3HvG98ZMaDGg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XjbUDJSsQG+4X535tz3BzbjtqJBfYtJlCnSMhr4Uu2Y=; b=wnIMWh1Yar22GbcZ1+yJMY4kF97PMYgmvlNKVveA4MJfvquiY8he+saWH0XpZnpRR3BKqDUAKpa/lvLCi/HjUJ55OhxhVefbyQTdf7SQwJMmP86BS4igGqwH85yGHfxIln1fqMcYwgTMnBws4pAPH1RHJsw+Kcf9mZKf3fJl1Tg= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 04/14] vfio-user: build library Date: Tue, 24 May 2022 11:30:23 -0400 Message-Id: X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3e9847f5-fb96-4b20-db08-08da3d9a6303 X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: 3y8NTR+TRsXntuQvZUWl681SXcVrMbAlKVntuVfFB8JrX/5AwHY0MbNGFP0onyiw7piE1MV38tGfXKPTtfet5Zd/N9n9YqthCs74TAKfuAmxuMRNib5pozeHT+G194sfc4pp0kEyMe3aTcwV0gHKLiRedD4QQ2dOjgPM3l5HgsTs4wQe7IHDoGFCVPYmnP8f85p11qMgoOEkba3FZ4tqd1k/L71mNGkwOsn3DbCpEfINK6mqJPDT/9Q0rUqgWZmKUmCestQlfNOt1YTAmn2koJZ/3r79nTiF47vRgrQMr18H+WDT3lPPIgepu4hbvdIVvZIvIWKmXx7KWMORsY9v9evD83ZWYQYkKs+khOLaVmPsd8raXVBSoglYhs/cF5olvHiF6Cv1QCjNimj7xm4RfCNto++btz0CwaXl6MQBe84LgA3dcM/h28t2d2C3Bwtbe49iZkVe+ekpcdvUHLO9s0s9cy1cLqx1Y7GANzXMoGXDrD03XpH4+BBCntPuUD0SFFEtMzYdnpy98Vi3gAFxLVx/g+5lEQBIcggRpQyMOoYCWL5sS3Bv5yboX/Jhy8UM8y5irBJLd7J7dCBPdzFvD/ogjm15tMG+pZPGLhz5YwQDyNvXHvlmYJehx1AdEkay+3DfxzOWtCUiWwjlqqdvCPVFQVLW3OuRilRsCL8JQMP59+qGX4uqkhbPIbTTGGXhidB/r3QelIU+m5HFzDSFlooGvwYF39ihCqGTLVORPURFCGUeIkIQ1PNXTWXWznWizchcHR1xuayBXp4sg0MYlXzw/GMmseAcLX6nJGMiRmJXAyXdZz1LeeoGAXu1zzdbeBinH0InKocFG8zX+xMIGA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(966005)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(83380400001)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?PT6D1FdKUh+ZpGrWm2Zjeg4GWzMB2QH24b5qEXJJdJRoJh0o/EwM/wur53NT?= =?us-ascii?Q?QVS3+beU19iLzblwHx4eiZd/5Ci9LXEtzRxpiuSfqIjsh/0kdX515Fs9NKDs?= =?us-ascii?Q?Pk9p36TraytgduzLDmz/CtdtgB5Lg2qd3D50vnz+R2SxLzs0dBvuM0hGi0eZ?= =?us-ascii?Q?Rt2Q+wM3D+rSrng0Jm1iZhRIZQDxdFzdhFgrlwduXw4L7LlLmhvBUDwJrVN8?= =?us-ascii?Q?Cnd0LTsoCQo21ORhi1RDkewktfZhnFU8Jyyz0m03phEsEuI1E4kZNxUzcwQi?= =?us-ascii?Q?5Wg8tBigeVB+8a1xOp5Guo7yERY0flVlodoqAzzT15eTjMxkj+8dVBmJ6h4R?= =?us-ascii?Q?Frv7czPptjeH4O7wZNVXIbfNr85kRf/8m6MwTvCPCOxHWwg+xlD/1NxUBAXv?= =?us-ascii?Q?LvGdOTF5AnI/gvtTJKiOsoSdSup2SpMK1FkBXLE5J8hBn9L7mPzblq83qzNO?= =?us-ascii?Q?FOBICq1ADL6gB0khNaHyCuFnNBnMfHljctc1pcIM1DtR8UJXIocjo4+3zLZS?= =?us-ascii?Q?tw1Ehuls4zUUydqf+tstyEEUaB+vJarkfPwfQx+OV/RrwERR3l6mqoPNSY6u?= =?us-ascii?Q?rCu6VFKQ2b3NK9kHpJ3xtFOmW+OcyeYUiLYhNDpsypPRkjL6OTw/HRK5b95N?= =?us-ascii?Q?Xt9/pTZttqc/xeB/6Saew42JW/yJuNc0YwaGvM5YslFtjwnAg3bOeHJx92Zp?= =?us-ascii?Q?MwLV3NXDw7CJoejzxvkLoTfMM8rjwKxa3l29BLudWFrm8SpCA9GU2B/Q9tFb?= =?us-ascii?Q?UFUPA+5mfFCU+ccg9O9EBD3iFem+FvpKEtnX4NyZL+PCPCaEjjh1gmSZ3QVI?= =?us-ascii?Q?kWOD7TTp2cPKibRjtgWLLFtF+iraZSFv2J/OrrAYSJnZztwkVNgP43+SIUXK?= =?us-ascii?Q?3qdh51kfntYC81YJwOU6zmjT+UxZPz2cY/iG6AyS1qrn5nP5U0vJepqG+nNh?= =?us-ascii?Q?OkWqGCQX2DEH3R67oMupEuKLqgpFeWSDP3LUGrt+RQqumJFYK8c2SgtGozrb?= =?us-ascii?Q?X7/WjYiVXXmNkBjX2TpcYPLWytoa5aeA0lLU/++0bkZ55p2H5UCXXlM8m7oN?= =?us-ascii?Q?Fd7QxKeQYwYaGk3vlnA9xt9VevZwy+deybzP2RRsmqYnv8IqcVTd37+TW10e?= =?us-ascii?Q?nCe38tGPXhkXFc+ZVBAInw1zropGVWysIklGy6ukpVBdJPtuySBdfz0xlfeL?= =?us-ascii?Q?3lGKNP639IJjO4G9J7WJzZdzrQGqjT0VPTbJIhp/ieXh67R43UNb44t1Nku7?= =?us-ascii?Q?Y3JiYma+A/esdZZiXz1yEbKNJFdVtx0n/+T61rLBKCvrH7ZwwSykYrPf6jcS?= =?us-ascii?Q?udIEV4W0erGLpQMtwQ+jyyqXX8KyboQzpkekKC6Zy8NeWTuE0KFQCm9YOBtx?= =?us-ascii?Q?VlJIzQqLRMOZRfTsQ8KTAg9uaPPqOfXpbLm3Ul+iIVloIaj2Vpr7B0FIAOEV?= =?us-ascii?Q?FrnMa1Do7blvXkD8jXvMUoJhM5udycZB48AbziDVBaKzfnh++9JoFUoXORgk?= =?us-ascii?Q?u9dnivO9AoHEEghalVtW8mlHZ902eLSiGnFJ3HR3E5GtusYGi2AiQ++aRm1k?= =?us-ascii?Q?iVE00Irtg7fIDwEKHyukpqBfPLl14PEqkA3xxpzMZrAGm3e5ccumdE4f9Ywd?= =?us-ascii?Q?n/kgs1pdRwjOGj0tBYSj7s/VbAov7Lv7xKjoPLmEClortGPniGQBNkW0NYeo?= =?us-ascii?Q?L4jgarv3WflZEMFxziAlj472UwFsSojV/it3zZYjprLydHoe9AGM7LJED9hy?= =?us-ascii?Q?ZddUIw6OkA=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e9847f5-fb96-4b20-db08-08da3d9a6303 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:30:52.6332 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dEZjlaqpVuoLfTssjGP36tir/D0XbqbBfVg6yJPiHNsA9JDKeojoScDpHcJg3fkNdWKvUGUuTKL+U2dhxjsqBA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 adultscore=0 phishscore=0 spamscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-GUID: 8QRa2tkcQfwo51-Ja1bp-8LieMipg2FA X-Proofpoint-ORIG-GUID: 8QRa2tkcQfwo51-Ja1bp-8LieMipg2FA Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.165.32; envelope-from=jag.raman@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653407230293100003 Content-Type: text/plain; charset="utf-8" add the libvfio-user library as a submodule. build it as a meson subproject. libvfio-user is distributed with BSD 3-Clause license and json-c with MIT (Expat) license Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- configure | 17 +++++++++++++++++ meson.build | 23 ++++++++++++++++++++++- .gitlab-ci.d/buildtest.yml | 1 + .gitmodules | 3 +++ Kconfig.host | 4 ++++ MAINTAINERS | 1 + hw/remote/Kconfig | 4 ++++ hw/remote/meson.build | 2 ++ meson_options.txt | 2 ++ subprojects/libvfio-user | 1 + tests/docker/dockerfiles/centos8.docker | 2 ++ 11 files changed, 59 insertions(+), 1 deletion(-) create mode 160000 subprojects/libvfio-user diff --git a/configure b/configure index 180ee688dc..d6a36ba8e6 100755 --- a/configure +++ b/configure @@ -301,6 +301,7 @@ meson_args=3D"" ninja=3D"" bindir=3D"bin" skip_meson=3Dno +vfio_user_server=3D"disabled" =20 # The following Meson options are handled manually (still they # are included in the automatically generated help message) @@ -891,6 +892,10 @@ for opt do ;; --disable-blobs) meson_option_parse --disable-install-blobs "" ;; + --enable-vfio-user-server) vfio_user_server=3D"enabled" + ;; + --disable-vfio-user-server) vfio_user_server=3D"disabled" + ;; --enable-tcmalloc) meson_option_parse --enable-malloc=3Dtcmalloc tcmalloc ;; --enable-jemalloc) meson_option_parse --enable-malloc=3Djemalloc jemalloc @@ -1796,6 +1801,17 @@ case "$slirp" in ;; esac =20 +########################################## +# check for vfio_user_server + +case "$vfio_user_server" in + enabled ) + if test "$git_submodules_action" !=3D "ignore"; then + git_submodules=3D"${git_submodules} subprojects/libvfio-user" + fi + ;; +esac + ########################################## # End of CC checks # After here, no more $cc or $ld runs @@ -2207,6 +2223,7 @@ if test "$skip_meson" =3D no; then test "$slirp" !=3D auto && meson_option_add "-Dslirp=3D$slirp" test "$smbd" !=3D '' && meson_option_add "-Dsmbd=3D$smbd" test "$tcg" !=3D enabled && meson_option_add "-Dtcg=3D$tcg" + test "$vfio_user_server" !=3D auto && meson_option_add "-Dvfio_user_serv= er=3D$vfio_user_server" run_meson() { NINJA=3D$ninja $meson setup --prefix "$prefix" "$@" $cross_arg "$PWD" = "$source_path" } diff --git a/meson.build b/meson.build index 9ebc00f032..6e66bb5a8c 100644 --- a/meson.build +++ b/meson.build @@ -308,6 +308,10 @@ multiprocess_allowed =3D get_option('multiprocess') \ .require(targetos =3D=3D 'linux', error_message: 'Multiprocess QEMU is s= upported only on Linux') \ .allowed() =20 +vfio_user_server_allowed =3D get_option('vfio_user_server') \ + .require(targetos =3D=3D 'linux', error_message: 'vfio-user server is su= pported only on Linux') \ + .allowed() + have_tpm =3D get_option('tpm') \ .require(targetos !=3D 'windows', error_message: 'TPM emulation only ava= ilable on POSIX systems') \ .allowed() @@ -2358,7 +2362,8 @@ host_kconfig =3D \ (have_virtfs ? ['CONFIG_VIRTFS=3Dy'] : []) + \ ('CONFIG_LINUX' in config_host ? ['CONFIG_LINUX=3Dy'] : []) + \ (have_pvrdma ? ['CONFIG_PVRDMA=3Dy'] : []) + \ - (multiprocess_allowed ? ['CONFIG_MULTIPROCESS_ALLOWED=3Dy'] : []) + (multiprocess_allowed ? ['CONFIG_MULTIPROCESS_ALLOWED=3Dy'] : []) + \ + (vfio_user_server_allowed ? ['CONFIG_VFIO_USER_SERVER_ALLOWED=3Dy'] : []) =20 ignored =3D [ 'TARGET_XML_FILES', 'TARGET_ABI_DIR', 'TARGET_ARCH' ] =20 @@ -2650,6 +2655,21 @@ if have_system endif endif =20 +libvfio_user_dep =3D not_found +if have_system and vfio_user_server_allowed + have_internal =3D fs.exists(meson.current_source_dir() / 'subprojects/li= bvfio-user/meson.build') + + if not have_internal + error('libvfio-user source not found - please pull git submodule') + endif + + libvfio_user_proj =3D subproject('libvfio-user') + + libvfio_user_lib =3D libvfio_user_proj.get_variable('libvfio_user_dep') + + libvfio_user_dep =3D declare_dependency(dependencies: [libvfio_user_lib]) +endif + fdt =3D not_found if have_system fdt_opt =3D get_option('fdt') @@ -3760,6 +3780,7 @@ summary_info +=3D {'target list': ' '.join(targ= et_dirs)} if have_system summary_info +=3D {'default devices': get_option('default_devices')} summary_info +=3D {'out of process emulation': multiprocess_allowed} + summary_info +=3D {'vfio-user server': vfio_user_server_allowed} endif summary(summary_info, bool_yn: true, section: 'Targets and accelerators') =20 diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index e9620c3074..2263a412e8 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -166,6 +166,7 @@ build-system-centos: IMAGE: centos8 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=3Dsystem --enable-modules --enable-trace-backends=3Ddtrace --enable-docs + --enable-vfio-user-server TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu MAKE_CHECK_ARGS: check-build diff --git a/.gitmodules b/.gitmodules index b8bff47df8..c4e66ddb6f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -64,3 +64,6 @@ [submodule "tests/lcitool/libvirt-ci"] path =3D tests/lcitool/libvirt-ci url =3D https://gitlab.com/libvirt/libvirt-ci.git +[submodule "subprojects/libvfio-user"] + path =3D subprojects/libvfio-user + url =3D https://github.com/nutanix/libvfio-user.git diff --git a/Kconfig.host b/Kconfig.host index 1165c4eacd..d763d89269 100644 --- a/Kconfig.host +++ b/Kconfig.host @@ -42,3 +42,7 @@ config MULTIPROCESS_ALLOWED config FUZZ bool select SPARSE_MEM + +config VFIO_USER_SERVER_ALLOWED + bool + imply VFIO_USER_SERVER diff --git a/MAINTAINERS b/MAINTAINERS index dff0200f70..c92d87daac 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3602,6 +3602,7 @@ F: hw/remote/proxy-memory-listener.c F: include/hw/remote/proxy-memory-listener.h F: hw/remote/iohub.c F: include/hw/remote/iohub.h +F: subprojects/libvfio-user =20 EBPF: M: Jason Wang diff --git a/hw/remote/Kconfig b/hw/remote/Kconfig index 08c16e235f..2d6b4f4cf4 100644 --- a/hw/remote/Kconfig +++ b/hw/remote/Kconfig @@ -2,3 +2,7 @@ config MULTIPROCESS bool depends on PCI && PCI_EXPRESS && KVM select REMOTE_PCIHOST + +config VFIO_USER_SERVER + bool + depends on MULTIPROCESS diff --git a/hw/remote/meson.build b/hw/remote/meson.build index e6a5574242..7da83350c8 100644 --- a/hw/remote/meson.build +++ b/hw/remote/meson.build @@ -7,6 +7,8 @@ remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('= remote-obj.c')) remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('proxy.c')) remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('iohub.c')) =20 +remote_ss.add(when: 'CONFIG_VFIO_USER_SERVER', if_true: libvfio_user_dep) + specific_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('memory.c')) specific_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('proxy-memory-= listener.c')) =20 diff --git a/meson_options.txt b/meson_options.txt index 2de94af037..2bf2d20b42 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -88,6 +88,8 @@ option('cfi_debug', type: 'boolean', value: 'false', description: 'Verbose errors in case of CFI violation') option('multiprocess', type: 'feature', value: 'auto', description: 'Out of process device emulation support') +option('vfio_user_server', type: 'feature', value: 'disabled', + description: 'vfio-user server support') option('dbus_display', type: 'feature', value: 'auto', description: '-display dbus support') option('tpm', type : 'feature', value : 'auto', diff --git a/subprojects/libvfio-user b/subprojects/libvfio-user new file mode 160000 index 0000000000..b52bff72d4 --- /dev/null +++ b/subprojects/libvfio-user @@ -0,0 +1 @@ +Subproject commit b52bff72d4eb646a453d19e19ddbd13ed6111a09 diff --git a/tests/docker/dockerfiles/centos8.docker b/tests/docker/dockerf= iles/centos8.docker index 4b20925bbf..10618bfa83 100644 --- a/tests/docker/dockerfiles/centos8.docker +++ b/tests/docker/dockerfiles/centos8.docker @@ -51,6 +51,7 @@ RUN dnf update -y && \ libbpf-devel \ libcacard-devel \ libcap-ng-devel \ + libcmocka-devel \ libcurl-devel \ libdrm-devel \ libepoxy-devel \ @@ -59,6 +60,7 @@ RUN dnf update -y && \ libgcrypt-devel \ libiscsi-devel \ libjpeg-devel \ + json-c-devel \ libnfs-devel \ libpmem-devel \ libpng-devel \ --=20 2.20.1 From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653408277; cv=pass; d=zohomail.com; s=zohoarc; b=IYwUuKj0Cwn65oaMIPlQXxnwCSfrUM2XuHhRdIsTG3WPBI00wX+Z6KcU7TEtucBSjz0HaZAbaFp/IyhQeqBFIv9ZTsiiBxznGr8jdoISKHM07hH+l1TQx0/7UnJY/9hy92ZhumAlqn+vpApfcnHjEHa0z/RK5sfeATSWW7BOXJc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653408277; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qe8AyEZeDbIRcOJOCNoa0AywoGhC9qnxLKj+tpWkUrk=; b=gpXZE+njhAgRTDYKw9tPPY49XUu9Dv1xL4vDnSWpgJF9vYpUNWNxnnkZNDvRplGVixJMVQdPSn9Y4XTvrux06xqyQ07A8xfdvbErLPSkZrJA7gKxnbqX6hZJ6CmXH5NjiQyOEhoWnfdOh9/y74zRLPRQ9wIGlePDS/25OzKaY8k= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1653408277797111.28495752494382; Tue, 24 May 2022 09:04:37 -0700 (PDT) Received: from localhost ([::1]:49164 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntX1Q-000507-Na for importer2@patchew.org; Tue, 24 May 2022 12:04:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39852) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWV9-00086Q-N2 for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:15 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:23432) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWV6-0003QS-C1 for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:14 -0400 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFHHId019083; Tue, 24 May 2022 15:30:59 GMT Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6pp06sb7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:30:59 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFQNej015857; Tue, 24 May 2022 15:30:58 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam08lp2040.outbound.protection.outlook.com [104.47.74.40]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3g6ph2rhy2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:30:58 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:30:56 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:30:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : content-transfer-encoding : mime-version; s=corp-2021-07-09; bh=qe8AyEZeDbIRcOJOCNoa0AywoGhC9qnxLKj+tpWkUrk=; b=mF4euonFXhNF1F46kLlD0oAidYuMbNj9sAsVo0vFKYpaMJu4o23qKgV9NvdOfh8EfIS6 +hE1Qyn9gokE9QTzpNC8ZurepPQZrcVS/UOrwOaudw148s89sBOTc4TiNLldXkasUIpk QqtgCH7Ibia2vJdcnYOBRUZ6fLEC+7jgSmbmySuxDmJ472Su1c0T7VVjDFy+PJ/ulqtC r0XYZYIR3nK+9+yLiveuwF1QafbmoHrBiW5ATPWVqAmbCH8i5vtrTZmGdycIc27eYCFi LXdiOm9Gg4iz3tanSUBpbG3awvRz1v5zHXrC1gzoV2ccgvxge3zXakL9XGskhsF4/Qa6 nQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mFv5rvZh2d2qRO2y/dRvJj5br55sTQcZKEX97lhVxDVZYyj+6/1HKFsxuFpbr24HdyfS3hDnK2E/mmZgGZ8d0tl0UCbhm7Sls4tmwtjtM0b6jryZkqNd2Z+Hx9INASnTlmNUn/xNIloJRoP50JSELYm+109xXcxLG/3BmygT2ai5cDKiGevK0Azq1eOm35aG9MDCar/fIs2JiHBPHQZILz/FF/Jtkc/6ZK8nMwY45rPoUMpqdpiGSoHhM2ct9J0t/2SPp0ZYjt7FGLeHoeC7a7H6BlQXGU04ub8KV5ujIrebVf+JT5jO+PagywHcD1yoqBjZVkNcydlLimFAC7+NVQ== 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=qe8AyEZeDbIRcOJOCNoa0AywoGhC9qnxLKj+tpWkUrk=; b=h8oHAwV6PD9Fa+RsHb9Qw62GpBdAqDqkoU64SGyH2zeYlSFDnYu+/UQCG8ogv4AxV+AYaJ2oszF+Pcjv+2TPS7ABWGXmJfN1TFw94dCGqyhW3MnneCldMY2FfO2BqWuxaqRsrX+uBZOsnAD6DK7YGE2DDnnUpEv0Za01TIGw5nbA+SJ9AaiAqkOFRCgmIJfNsb35xzlAVi5KOF++FNDdB2ppZtbF4cmNboH40pMgZcdGxicxliNwnEOFE96b4NACROFRN+MGvZroiKpBkKtIc2dLDI0/ocmSidv4CGmFbPqSRFIV0NvAg6tfVEC9PlMecBJ/8uJaEGEKgNmhIe02ww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qe8AyEZeDbIRcOJOCNoa0AywoGhC9qnxLKj+tpWkUrk=; b=hQM78QFYNSN8+++dl9fjPxb5ej94JBhL452+bXUpNt1ydnY1bHyuhnYkCffp5iavqV2Wg44BWvVN+NvM9V+367U3sxLN2Dp6PMEQeUlhig3R91HDY9fkBVofKUrcXsxECoZz0u7B5n7rGQ9ORu91cfbW/UV+F8JXsqcgdi7bOos= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 05/14] vfio-user: define vfio-user-server object Date: Tue, 24 May 2022 11:30:24 -0400 Message-Id: <4908eb950f336421d900b64727dda2ba230aa2fa.1653404595.git.jag.raman@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 838ea086-acd9-4aa2-e5f0-08da3d9a64bc X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: k8gNjXnUgESp4DpeqvbW/HaJglGYFG2an4i9tlYwCMyzntzN1S7svK+Kwm+VEdaZZcu6VwA9xfISKGGPxO629dBrh+kVUVw3LSCmk9VRYyBpLK6aRZo49WG2sCdoAKvyVIys38l8Fv19bLolbRI2asZjvCBEksJJUS8WjQ0aEcDAn2FonihggyeZyXeSkCLcb/pJgeoMbp9eJKpIcAnyDPP0n21AS4aBFekfxD7gj1r8JTY1n6wQ6He0qEU+fnLmhKMfiIKRDElpLX8y0fSyjLGmSAQ3qMuWDzCTJwmI0BzuUOyBF8NOq2geWwDJLtaGQcbr6TxU4qH7ajZ4qZC8DCFX1OPy0KQH4S7s032GFY36dveYGPci2rkv2ALQhRp6zHmb/gId4+1U9nwn1J08/h+2XMFhf9awUqlsLINtwK0+z/L7v/1qQ3Il1O/fsOxogpm+FCh1lyAqrpEqZx8t8+J3pUOiyvxBUIoizPdFSVNHUoqlExAY24plQLYnWfb6PZDi3GqHPcm+rzOVaHHvmd4GAc+DYzdOeAIilDJ8Sf3E0PfAJwSH+p/Pt9Z94Q9WKB0rRo8Z0gMtTCJPj4Ku4g8ru+9WmkpDoo7dciTlbMFOYtAQAPyQINNE9eAaHw6ow8dqJ0FvrS1PN/fR8zk2ZX251xYAkMUfn+lHiBCnAjOpaVSfN06KXiDSY511RNWUrQwDkTb7kISaYuczioYFhg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(30864003)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(83380400001)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?N3JQVE51QXJyQUJod29mTE1Qa0R1UDViSmVNMnJWYXZrdkN0SW9RWDlsdWxt?= =?utf-8?B?TldKcXFObktGV0c3QXAxeUdOT3dpdndneTB6VWNVN2RMbllaaFRyNjRJQ0xC?= =?utf-8?B?V3AwNldrRGZjM3EzYjlXK2VaKzg0VGd4c1c4VDdtRHBhZUtKb2tWMDBIK1JD?= =?utf-8?B?SFg3Q1FFaW1INGFJRm02bGdhWEJUSEIxRk5yMnRIUkN6QnJTNUNFTXBBQ2pu?= =?utf-8?B?REw0Y2RPMFQ4Zjd5dUpSM0tKRnlON3lNTUpEc0tRN1NRVWxQTHJkS1hObFZN?= =?utf-8?B?TVNXdEVtbmVZWVZ2bE5WRG1iYnI3MEMrZUJpYk5weW1BNU5mdUhPZHVXOVpI?= =?utf-8?B?UGxCa2k2WjgwdDVqSEJqT2hQMThJS3dUblh5V2piajBld1pEd041U1dsak9K?= =?utf-8?B?Tk90NElyenMwMDRvSk0vdHNSclM1S1FTMVUwWGdocmNjblBjcnZRQTRidFJh?= =?utf-8?B?VG9MaXJTdTh2R2tKd2dlS2E4bEs1YlVSMkE2TVAzemd4dGx3MmI2UFZobitk?= =?utf-8?B?QS9JL1lOYkNJekg2d3JrVHBPSXROV2IxWHQxVzI5cVJhTVpRUmJCUy9NVzJ3?= =?utf-8?B?NGIreERWL1dKSW9uTWFqY0NmaW9nWkJwRzMwdjNtSTRTVGplaFJJZy85VUJM?= =?utf-8?B?OUErWTc1MGRnUUlDRnJ5WHg0NXkxcStLem92WGZ0bGZTNit4UnZhVlMzQXNx?= =?utf-8?B?a3d0bmtKeHhxVVFUd3ZKUlJYOWNUVnRzY0tiMFlZdFlsSWZMQUplanRzWEpv?= =?utf-8?B?czEzdDR0NkJyeS9Qd1dwZ01UL2dkVm1pOTFyMlk0Zm53cEMvTndTUGRISzBQ?= =?utf-8?B?L1Jwc2FHUU0zVDFiMWpNekRBblhYNUNzOC9PUm1qbFZLQzRJTVlZN0FRdVp1?= =?utf-8?B?czBTdDhyTkJlc1RlQnZwWkYwZVRLcWlZUS9lbmlZSzJnNURZbDNkZHFKUkRw?= =?utf-8?B?NFROSzQrcHo3cHhQajFiQ2htaHMraDFiNEk2dWxxcGFJcHVSK2xzblRBbmoz?= =?utf-8?B?S0JGQ1JRR09rM0NYbHRHQU1jbFFOZmI1QnBQckhKb1RZSkp2Z2JhN3cxN2cw?= =?utf-8?B?RXZHQ0krN29NY3BOOXFOVFZOSWV4NEs3ajNlSklYYkZJMmdhMURGNTFDejV4?= =?utf-8?B?ZWE0WWx0T0hsU1ZpZVJLN3UxZ0p6VGhicll2Tm1TVVc4Z2lXMFNyK2g4a1VC?= =?utf-8?B?dC9QbFF5VGwzbzJldDhyTjJTZURYQ09XdWRKU0lnMk5RL0xwMmdOMEJtUnZS?= =?utf-8?B?elVibThNbXM2RmlWT0JQVEJoNkY1eGNUblZHWXhBWHVmdm01ZWFvK2JDZFc3?= =?utf-8?B?MURoM3czNmJIblBJcW5GSHdTNjVQVXI4TVpCMWM0NDkzZTk3QnlHY3kxbHlk?= =?utf-8?B?K2ZQclhJME5lL0FFYzltTkJ3VWd5YkJqOEJickppSnpWMytmdzR2TEU0WE5j?= =?utf-8?B?Z0M1cDBKUVhsUTFNYXJ5bTVFRTUwamc3enZzNmhwblB3OUZuYUoxYkw2bXda?= =?utf-8?B?SVppRzlTb2liSWV6Y0E2QnhTaGpaZWFXSGFmWnNsSmQwS1l5OGwvVmJxNklo?= =?utf-8?B?TCtVczM3cmsyR2ZiUnp0TlljbksyMFovK2JCdFNkVlZ4UExpdWdxN09kU3ZX?= =?utf-8?B?OFZuckNqa2t6YWVmcUFKazBsVnJ4ZzQrWG9wSzFSTU9vNTNpd1IyMjBXQlBJ?= =?utf-8?B?RWQvQkhrVkIyYTB4MDRwQ1VobGJFdm50SDJvMXc4ejQ1K09RbTRYQjBpN1lM?= =?utf-8?B?SzkyRWRBdXNTdnNPZllJWXJxVVF0dGZaYmxIS0g3NHM4L2JSQUFPdkxwMXFS?= =?utf-8?B?Z3NPbEFKK3M1clZDUFlqMFdsMmh5MWVXY0VXSEVQQzBFTU9zZUkvRWdySmJr?= =?utf-8?B?VnZXUnRVYWRZUUEyRW1WRW1PV1puOVZOeHVqTmxRakVRZGh6MVgwZnJnNEZx?= =?utf-8?B?L0Q0SlA4VTRpV1h0VTQ2eEQ1cERMdDJJMjI3amJVVzVsaVBOeTlWeklZQ0lw?= =?utf-8?B?aDhVTVRSTU1wbm16TjJEdHdsa3djbTNMWHBmWFdlblZLbzlpaU9GclYxOEJz?= =?utf-8?B?K0I0ai9tRWprWU5mRFo5aXgxdzIwUXo5VWZhNlBQV3ZoeUJDbkNrMHNpYk8x?= =?utf-8?B?Ynp4ZlppVzVVTnhGaGRKRFcwTnBlNDdDaHJaSVp4NnI0ZERic3hoM0tDWUFi?= =?utf-8?B?VysxQjV0WWhtYU5XUE80WWhKbGg1Mjg2SEQyM2RpanRVbFRCdFd6aWFUamND?= =?utf-8?B?KzNJeTBVSXpmUFY2dDNGOW1kRWE2dUdNL0k2SHJPM2ZoOUt4ZWR1UEtmeWZw?= =?utf-8?B?NlNzNWc2NWU0U0FYeHh3RzlkSUlQRGxlaVUyOS9kQjFrc3FXdjB6dz09?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 838ea086-acd9-4aa2-e5f0-08da3d9a64bc X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:30:55.5236 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HdbJNSBS+xjXzyox8lzgG1NsAkLLwF7/ucMFGBOGvxQv2wi+tXnZlIBt2JrJM0pjIt7jwgS9afzuWfQE4Ay+RA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 mlxscore=0 phishscore=0 mlxlogscore=999 adultscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-ORIG-GUID: rGHYwFVQ4ehySEUdvzg5ILuoo8m7g7US X-Proofpoint-GUID: rGHYwFVQ4ehySEUdvzg5ILuoo8m7g7US Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.165.32; envelope-from=jag.raman@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653408278653100001 Define vfio-user object which is remote process server for QEMU. Setup object initialization functions and properties necessary to instantiate the object Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- qapi/qom.json | 20 +++- include/hw/remote/machine.h | 2 + hw/remote/machine.c | 27 +++++ hw/remote/vfio-user-obj.c | 210 ++++++++++++++++++++++++++++++++++++ MAINTAINERS | 1 + hw/remote/meson.build | 1 + hw/remote/trace-events | 3 + 7 files changed, 262 insertions(+), 2 deletions(-) create mode 100644 hw/remote/vfio-user-obj.c diff --git a/qapi/qom.json b/qapi/qom.json index 6a653c6636..80dd419b39 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -734,6 +734,20 @@ { 'struct': 'RemoteObjectProperties', 'data': { 'fd': 'str', 'devid': 'str' } } =20 +## +# @VfioUserServerProperties: +# +# Properties for x-vfio-user-server objects. +# +# @socket: socket to be used by the libvfio-user library +# +# @device: the ID of the device to be emulated at the server +# +# Since: 7.1 +## +{ 'struct': 'VfioUserServerProperties', + 'data': { 'socket': 'SocketAddress', 'device': 'str' } } + ## # @RngProperties: # @@ -874,7 +888,8 @@ 'tls-creds-psk', 'tls-creds-x509', 'tls-cipher-suites', - { 'name': 'x-remote-object', 'features': [ 'unstable' ] } + { 'name': 'x-remote-object', 'features': [ 'unstable' ] }, + { 'name': 'x-vfio-user-server', 'features': [ 'unstable' ] } ] } =20 ## @@ -938,7 +953,8 @@ 'tls-creds-psk': 'TlsCredsPskProperties', 'tls-creds-x509': 'TlsCredsX509Properties', 'tls-cipher-suites': 'TlsCredsProperties', - 'x-remote-object': 'RemoteObjectProperties' + 'x-remote-object': 'RemoteObjectProperties', + 'x-vfio-user-server': 'VfioUserServerProperties' } } =20 ## diff --git a/include/hw/remote/machine.h b/include/hw/remote/machine.h index 8d0fa98d33..ac32fda387 100644 --- a/include/hw/remote/machine.h +++ b/include/hw/remote/machine.h @@ -24,6 +24,8 @@ struct RemoteMachineState { RemoteIOHubState iohub; =20 bool vfio_user; + + bool auto_shutdown; }; =20 /* Used to pass to co-routine device and ioc. */ diff --git a/hw/remote/machine.c b/hw/remote/machine.c index 9f3cdc55c3..4d008ed721 100644 --- a/hw/remote/machine.c +++ b/hw/remote/machine.c @@ -77,6 +77,28 @@ static void remote_machine_set_vfio_user(Object *obj, bo= ol value, Error **errp) s->vfio_user =3D value; } =20 +static bool remote_machine_get_auto_shutdown(Object *obj, Error **errp) +{ + RemoteMachineState *s =3D REMOTE_MACHINE(obj); + + return s->auto_shutdown; +} + +static void remote_machine_set_auto_shutdown(Object *obj, bool value, + Error **errp) +{ + RemoteMachineState *s =3D REMOTE_MACHINE(obj); + + s->auto_shutdown =3D value; +} + +static void remote_machine_instance_init(Object *obj) +{ + RemoteMachineState *s =3D REMOTE_MACHINE(obj); + + s->auto_shutdown =3D true; +} + static void remote_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc =3D MACHINE_CLASS(oc); @@ -90,12 +112,17 @@ static void remote_machine_class_init(ObjectClass *oc,= void *data) object_class_property_add_bool(oc, "vfio-user", remote_machine_get_vfio_user, remote_machine_set_vfio_user); + + object_class_property_add_bool(oc, "auto-shutdown", + remote_machine_get_auto_shutdown, + remote_machine_set_auto_shutdown); } =20 static const TypeInfo remote_machine =3D { .name =3D TYPE_REMOTE_MACHINE, .parent =3D TYPE_MACHINE, .instance_size =3D sizeof(RemoteMachineState), + .instance_init =3D remote_machine_instance_init, .class_init =3D remote_machine_class_init, .interfaces =3D (InterfaceInfo[]) { { TYPE_HOTPLUG_HANDLER }, diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c new file mode 100644 index 0000000000..bc49adcc27 --- /dev/null +++ b/hw/remote/vfio-user-obj.c @@ -0,0 +1,210 @@ +/** + * QEMU vfio-user-server server object + * + * Copyright =C2=A9 2022 Oracle and/or its affiliates. + * + * This work is licensed under the terms of the GNU GPL-v2, version 2 or l= ater. + * + * See the COPYING file in the top-level directory. + * + */ + +/** + * Usage: add options: + * -machine x-remote,vfio-user=3Don,auto-shutdown=3Don + * -device ,id=3D + * -object x-vfio-user-server,id=3D,type=3Dunix,path=3D, + * device=3D + * + * Note that x-vfio-user-server object must be used with x-remote machine = only. + * This server could only support PCI devices for now. + * + * type - SocketAddress type - presently "unix" alone is supported. Requir= ed + * option + * + * path - named unix socket, it will be created by the server. It is + * a required option + * + * device - id of a device on the server, a required option. PCI devices + * alone are supported presently. + */ + +#include "qemu/osdep.h" + +#include "qom/object.h" +#include "qom/object_interfaces.h" +#include "qemu/error-report.h" +#include "trace.h" +#include "sysemu/runstate.h" +#include "hw/boards.h" +#include "hw/remote/machine.h" +#include "qapi/error.h" +#include "qapi/qapi-visit-sockets.h" + +#define TYPE_VFU_OBJECT "x-vfio-user-server" +OBJECT_DECLARE_TYPE(VfuObject, VfuObjectClass, VFU_OBJECT) + +/** + * VFU_OBJECT_ERROR - reports an error message. If auto_shutdown + * is set, it aborts the machine on error. Otherwise, it logs an + * error message without aborting. + */ +#define VFU_OBJECT_ERROR(o, fmt, ...) \ + { \ + if (vfu_object_auto_shutdown()) { \ + error_setg(&error_abort, (fmt), ## __VA_ARGS__); \ + } else { \ + error_report((fmt), ## __VA_ARGS__); \ + } \ + } \ + +struct VfuObjectClass { + ObjectClass parent_class; + + unsigned int nr_devs; +}; + +struct VfuObject { + /* private */ + Object parent; + + SocketAddress *socket; + + char *device; + + Error *err; +}; + +static bool vfu_object_auto_shutdown(void) +{ + bool auto_shutdown =3D true; + Error *local_err =3D NULL; + + if (!current_machine) { + return auto_shutdown; + } + + auto_shutdown =3D object_property_get_bool(OBJECT(current_machine), + "auto-shutdown", + &local_err); + + /* + * local_err would be set if no such property exists - safe to ignore. + * Unlikely scenario as auto-shutdown is always defined for + * TYPE_REMOTE_MACHINE, and TYPE_VFU_OBJECT only works with + * TYPE_REMOTE_MACHINE + */ + if (local_err) { + auto_shutdown =3D true; + error_free(local_err); + } + + return auto_shutdown; +} + +static void vfu_object_set_socket(Object *obj, Visitor *v, const char *nam= e, + void *opaque, Error **errp) +{ + VfuObject *o =3D VFU_OBJECT(obj); + + qapi_free_SocketAddress(o->socket); + + o->socket =3D NULL; + + visit_type_SocketAddress(v, name, &o->socket, errp); + + if (o->socket->type !=3D SOCKET_ADDRESS_TYPE_UNIX) { + error_setg(errp, "vfu: Unsupported socket type - %s", + SocketAddressType_str(o->socket->type)); + qapi_free_SocketAddress(o->socket); + o->socket =3D NULL; + return; + } + + trace_vfu_prop("socket", o->socket->u.q_unix.path); +} + +static void vfu_object_set_device(Object *obj, const char *str, Error **er= rp) +{ + VfuObject *o =3D VFU_OBJECT(obj); + + g_free(o->device); + + o->device =3D g_strdup(str); + + trace_vfu_prop("device", str); +} + +static void vfu_object_init(Object *obj) +{ + VfuObjectClass *k =3D VFU_OBJECT_GET_CLASS(obj); + VfuObject *o =3D VFU_OBJECT(obj); + + k->nr_devs++; + + if (!object_dynamic_cast(OBJECT(current_machine), TYPE_REMOTE_MACHINE)= ) { + error_setg(&o->err, "vfu: %s only compatible with %s machine", + TYPE_VFU_OBJECT, TYPE_REMOTE_MACHINE); + return; + } +} + +static void vfu_object_finalize(Object *obj) +{ + VfuObjectClass *k =3D VFU_OBJECT_GET_CLASS(obj); + VfuObject *o =3D VFU_OBJECT(obj); + + k->nr_devs--; + + qapi_free_SocketAddress(o->socket); + + o->socket =3D NULL; + + g_free(o->device); + + o->device =3D NULL; + + if (!k->nr_devs && vfu_object_auto_shutdown()) { + qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); + } +} + +static void vfu_object_class_init(ObjectClass *klass, void *data) +{ + VfuObjectClass *k =3D VFU_OBJECT_CLASS(klass); + + k->nr_devs =3D 0; + + object_class_property_add(klass, "socket", "SocketAddress", NULL, + vfu_object_set_socket, NULL, NULL); + object_class_property_set_description(klass, "socket", + "SocketAddress " + "(ex: type=3Dunix,path=3D/tmp/so= ck). " + "Only UNIX is presently supporte= d"); + object_class_property_add_str(klass, "device", NULL, + vfu_object_set_device); + object_class_property_set_description(klass, "device", + "device ID - only PCI devices " + "are presently supported"); +} + +static const TypeInfo vfu_object_info =3D { + .name =3D TYPE_VFU_OBJECT, + .parent =3D TYPE_OBJECT, + .instance_size =3D sizeof(VfuObject), + .instance_init =3D vfu_object_init, + .instance_finalize =3D vfu_object_finalize, + .class_size =3D sizeof(VfuObjectClass), + .class_init =3D vfu_object_class_init, + .interfaces =3D (InterfaceInfo[]) { + { TYPE_USER_CREATABLE }, + { } + } +}; + +static void vfu_register_types(void) +{ + type_register_static(&vfu_object_info); +} + +type_init(vfu_register_types); diff --git a/MAINTAINERS b/MAINTAINERS index c92d87daac..8121671228 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3603,6 +3603,7 @@ F: include/hw/remote/proxy-memory-listener.h F: hw/remote/iohub.c F: include/hw/remote/iohub.h F: subprojects/libvfio-user +F: hw/remote/vfio-user-obj.c =20 EBPF: M: Jason Wang diff --git a/hw/remote/meson.build b/hw/remote/meson.build index 7da83350c8..0eb5a0f375 100644 --- a/hw/remote/meson.build +++ b/hw/remote/meson.build @@ -6,6 +6,7 @@ remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('= message.c')) remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('remote-obj.c')) remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('proxy.c')) remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('iohub.c')) +remote_ss.add(when: 'CONFIG_VFIO_USER_SERVER', if_true: files('vfio-user-o= bj.c')) =20 remote_ss.add(when: 'CONFIG_VFIO_USER_SERVER', if_true: libvfio_user_dep) =20 diff --git a/hw/remote/trace-events b/hw/remote/trace-events index 0b23974f90..7da12f0d96 100644 --- a/hw/remote/trace-events +++ b/hw/remote/trace-events @@ -2,3 +2,6 @@ =20 mpqemu_send_io_error(int cmd, int size, int nfds) "send command %d size %d= , %d file descriptors to remote process" mpqemu_recv_io_error(int cmd, int size, int nfds) "failed to receive %d si= ze %d, %d file descriptors to remote process" + +# vfio-user-obj.c +vfu_prop(const char *prop, const char *val) "vfu: setting %s as %s" --=20 2.20.1 From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653406471; cv=pass; d=zohomail.com; s=zohoarc; b=GePznj/9DEm6LH5HQ33FphRT9b8fvq/0ZGTMY0mFbP6NeSLTKXpgq5XgfyMy2lffhYWGf7vI5ALWusNWHGnuYby5G3NglUj68xVn4tasrktNjLsxa3ia8oSzUnKt0Nj47uCt7nYWLR++R+1qMHUZyo2TLBXBA8qygjIWr1QgQeo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653406471; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=BTtlySDlLng/K1IiRZ5NpCjL6JerC3eFuMJCe1bmrmU=; b=U9p7sH9GY4PProbMTfdDuNN0byt/RRd1EXkmqQitoUN47gHwfDQ+1I3S+RqK58Xqa7rLsiIsv32/pUIb8D0tiuQNWNFFq6PXXTqve2d+ngQ/OqkDdFNJI+E/G+Uruii9xSh28ejdomIbimoLz2oVxVHDbz1POoQqV4++u04oyPU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1653406471061242.9497500622026; Tue, 24 May 2022 08:34:31 -0700 (PDT) Received: from localhost ([::1]:56092 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntWYH-0002YI-Ri for importer2@patchew.org; Tue, 24 May 2022 11:34:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39724) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWV2-0007sC-TF for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:08 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:4906) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWV0-0003P8-9n for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:08 -0400 Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFSBdG001529; Tue, 24 May 2022 15:31:03 GMT Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6pgbpq9f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:02 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFFYet016795; Tue, 24 May 2022 15:31:02 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam08lp2049.outbound.protection.outlook.com [104.47.74.49]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3g6ph2k52m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:01 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:30:59 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:30:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=BTtlySDlLng/K1IiRZ5NpCjL6JerC3eFuMJCe1bmrmU=; b=Ii0uQ03x2be4Cg/FejtsCyVlf/M/MOX5FiNqTkxVR94u4LQu4vmwY+2P1clYxMNRvPv+ v5ZrZn6mDhFJ7HDe0m80mxdJYrMBZlMEW/STkEb6Yt7N3ES0RGbOdce1qd2nl5rgnw9p vB6GHdhYldU+KKen6svxYgCOXa1nQs4EAduTpRvtzVlUsufO2IiM6UMw6d+wxe4On67m FVUKMI9D98OpjFTEjZv4XbyUnvv3Hz4X3z0+FuVyWTqMiUYMDpKhZxO6+kEpcQ6Nyjzj qEv6nXal/WeLdeWytT5PfsQXJUNOwQBGzTVoyE390zCVPHcSCUbh7XitXAWyYsyjr/Tm 8A== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XhLVZkUI/rSBA2PTAR9/S6X8pnXVnFjY2aL+m8URxVcqhC9nbp4+w0F/Qf4MGymNgKPRDqLL+1YKQ3CBxfDvvvKNiwmomuKjeBL32dZliP8Z0vTXLv7q2PhXiXzf6FCvMUnAe9xqYv8WDJjbQP4QTKRcEAsjA0mcnut6JQ1C2n+FoB2SZ3z+vEOq4LvLsGQdgsClAQ+Sx8Adb8MsxW9XLpQ95eZIbUV0zbIKNVI7YSR3Agi7QrN+U3sjbfz7sVFTmk6jJSo/I3HHiYH2IaZ5rwnQ31C2trVcI1BcxC7E8eFIwAQWMT/ofRMpJ3Kdq5VhBD7HYQu6oKNVzD8b0rw1yg== 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=BTtlySDlLng/K1IiRZ5NpCjL6JerC3eFuMJCe1bmrmU=; b=iE3T4Z5CwGev14+hXQJ5tZgss/OpsZ4Vx3anCu+cTL90SH5MMKCjbOwkmJxwDOksJ2MiZbRT5137CK7X+KQZcs1+D4Laf/Mq2dK2rMX0ZyLw4qwhge8OqU/b/3eZ5S43XUEMvj1/sGydR4jmNHA46bGS3XtzRAyX2ol+O0CeGI2kSOcqvbVWzuvwiXzc8V7wJYdTTjRZTHZ0wqP4S/7OnJmeEEkZi0PljfzzdCuaznlcPfz0J/25khMl4dOv+K0AxDMJWfHCC3cAgU6ZZrkfGYFB1nCsrsGkZWLRiMyAN8U15AGgfC1erKIQPPkX2vYSex3ByaFDvGJXdHxKlFQ5ag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BTtlySDlLng/K1IiRZ5NpCjL6JerC3eFuMJCe1bmrmU=; b=ycP1hVgww7LmF4AV95Od1uoIEUZV6npk2uAd3ZT9eznXHSNsW2lEqzmOV41yT0gmC9SqpDXsyyKOOVHLEUDca1KyVTi17KiQqklxHe+yxW8+A5jdGVRwzpyDq/Vm7wy2o3yTHV1qorFjuadNJULNkbRsyAl3lvo7N0kgfVczlos= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 06/14] vfio-user: instantiate vfio-user context Date: Tue, 24 May 2022 11:30:25 -0400 Message-Id: <38676caf167ae5205a4179e6a1256d2586b801af.1653404595.git.jag.raman@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 49a87500-5de2-4b61-38b8-08da3d9a66e1 X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: 4UNESoZUwjVttqSMzjYhai3SYUepJW/OCRKECNYrJmk23ENuE5R1zi6IqfzSzkfEK1UNgJbOHxxx5/5g4kzeAEIsVhKIkCm0vzH+l0mQ4ecVFIdP6hrDDfrZGQpe0+15C1MC4D8R8H5iF3fXx9moMOyOJHj42UjE9yjh0ygFp44YkgotVL86f9UmISYCgyfU39A18DE6h1XM/RerOOxERv4r5QzW+9pfHZd4YhIpGi3qQSRIrwa91IFrdVV1VzL/aIRSTu94HLRg1ESThQZVdiCFvdMJSJ7gwHY2VWn0cC2Ngn4dsd1jzapYDPS2NNfE1+YSHmnlNpVv5dq+aYvPEiVLF6sQxFszX+aPb7Xk7uea3NBqDJTMBSJpFGfqQE/m2TERTxR99Bc/ysVKi83jlfJoEp+1qhluztM+e5w543KFZ2Xy636pojaMt7Y3/rDqLswd0qzyLxRp7yYjqaDrW7tzFGJIGplO5wlMFKMElgvaLR9QClBN0vqjJAuYHAYQqqFAJ6DDF9W0PrlzEUWy7yF5mp0rmMIBpUpbgDcQN2nI/D8uW2qgKn+IrxeY8tWUYFJKNsdv89JJIu3ED03TJKThg1vYUo/qZhJdwFcSx7IJ7nosAIfjWESQQd+4PDAdc9aBVfCkLiLAe5KAEs1v9VSMJjSEJQ+WK/j77pFUsQqhfULaqkNtIt2UpPChpTNPUrzp88dX09oJfazVTkeN/A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(83380400001)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zq5XJWXr6Hc3m9gF5ufTEIcjse5II1dh4L31rSYfVpgaBRfDTZjkhHq1hzic?= =?us-ascii?Q?t+/b5UdPGQy8D5NUSbr0jBdX8MCYsyUZxfFdzh6RpKOWnqGUmU9cyyD9DGzT?= =?us-ascii?Q?qKSORtJOgPxF1l0M4FQOV0UBvbmJuobMG3hJBdsViAgc4knWO4K/F4HENNDB?= =?us-ascii?Q?02nyzhd5F0rpJwjRtbXAyCeSt5/jVtWNQJgRMSkf5895k22IPy9b4c9ocOzQ?= =?us-ascii?Q?PJ6jcYPi18qMDmconLgd2wt5JtJArhEh3I50OtYIivpb6BB9uhMN8Hs2fg3l?= =?us-ascii?Q?KGAlPlkU+DjsCuGcWimIvBjki+ajhI2Nayko5IwjHw76iXNdn5yRbOJvtpIV?= =?us-ascii?Q?9jW+Hc5up2ScnnDF9N95FyfDtQk3VWN+swhO8g7K/LN1jpKBSMhU5ZkciQjV?= =?us-ascii?Q?UJguDEJvVTJr/NSiGrjRcscV1NpmGYHVzwMVAvEDHbqjpkI14hpMQVY2rrsb?= =?us-ascii?Q?SEsBWTnTVUL92ZpinISVej068h9oY1rM1DOEqRyp4VjP6KQUsQ5N8cKM2mX1?= =?us-ascii?Q?yC5IQ6PWJMaERhpfFWIDJpPz+fDIB5QVSJVlNB5tmD1VJNmHaPtaycUnNcQw?= =?us-ascii?Q?fxNOCbd1qevSl7wjyLFT/bpyBdcmK+H0CcpXyuPfSFVd/udsGenuoTH/cCBX?= =?us-ascii?Q?P3oF7JZEQlIN4R1IFGVYcQ1QesHQwb4LXfuekaTT93C1zFAXyzLL8kV5UNPe?= =?us-ascii?Q?2J7plN8nO4l7Yc7vqM+v5INu3Sj27pUquf4ihsSaYTcVGx1zrDuA8nPpYpuH?= =?us-ascii?Q?s6M1diPqy5OUcNbS1z4TBaVqR+y7ydNid31Lyn/kXPAQGzxD60bwQBW8NXx6?= =?us-ascii?Q?xsjCy9f+PI/igp+mw6FvWb0AwumJE+EjhuzS4KswkDljOpBVRyhycJY1NWX9?= =?us-ascii?Q?VBYM503tijdctwWSxZNyFscJ/x4JUrJMiytRFWpXyIDvgYa9k6FzI8Y8gkNu?= =?us-ascii?Q?fwLB+hpf8CMTadgOCMzlLm24Pm5GxqYMR/PlVoYV2EicPR1EJMMsqUN8ykjN?= =?us-ascii?Q?JviE+8lKeCJ92yHONMnLCpFxQbOW73be8K3+EIjPC/5/ovWJ/gLcghEew77c?= =?us-ascii?Q?SpQHg30pBii/ODNQdUQulbnKLb0Lzn16oP0ecaUQ9J1ucMB+YG4tjN7nHT+z?= =?us-ascii?Q?fc9c89Ko7elams7gmxd/rqcSn48ijzDfOIkUCnL1Av08M/gdJbhTYu/vExrl?= =?us-ascii?Q?qBr0tQ6KCGq/0gBfyatkAa/J6kR4OY0U6Wpgko+JssIFO8GQMCQahvx4TjLW?= =?us-ascii?Q?0yX8lQU9hSaPuDsjjekfIF9ZHMve67zQCSu3fibQGQ3JUZDHebKbz+mJC5SE?= =?us-ascii?Q?1vSHBpIO0KeoDv46wtu9mqkG8dY8lncb2lZ9FuyeDt6guniiSfLBoUj9SSO4?= =?us-ascii?Q?t4W43535LyCgqwexhvSAASGJBrIuXtaAZbms8b5gfFEXb3zW/a9CAdtbsPhn?= =?us-ascii?Q?S2jHjisYJJ1iUDuN18vzXzGEywmkzF3TzPTEe999QRBGSqOber34SHbd78MF?= =?us-ascii?Q?p3Udc5XZHmB1/LPXLpSJznroFaNRvYilr+3SOD3nVd2xWS9EU5TAGQnhpnGK?= =?us-ascii?Q?oIviNXQviB+tLPRSTnUTjjabQchnJqtNWE3wggM+mEcMb1qUYZfE82wDZ7hf?= =?us-ascii?Q?gqUzN+Cy17nVJrW4VBbM4qAA8wl08bkRyE+aKfky+672BMnGu+1Qs57kUf4Y?= =?us-ascii?Q?C04/l32mgZ2m3aLiiK2Fd34TGTfp5L30I2FVhpigds3jtopsUsKU52V2ENjY?= =?us-ascii?Q?88+pXkI0gw=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 49a87500-5de2-4b61-38b8-08da3d9a66e1 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:30:59.8202 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: W8Pn/NHFtRfvFvjE2CyHzBLeYmSqpw7mqZRapNutWED5EgWANmAB8HL76rjtQmPLpQVxQn3X5AWYmgVYjXcWjA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 adultscore=0 phishscore=0 spamscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-ORIG-GUID: GET_f6etv10SDt93r90XlvS_SX8VU9j4 X-Proofpoint-GUID: GET_f6etv10SDt93r90XlvS_SX8VU9j4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.177.32; envelope-from=jag.raman@oracle.com; helo=mx0b-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653406473414100001 Content-Type: text/plain; charset="utf-8" create a context with the vfio-user library to run a PCI device Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- hw/remote/vfio-user-obj.c | 96 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c index bc49adcc27..68aac0c2b9 100644 --- a/hw/remote/vfio-user-obj.c +++ b/hw/remote/vfio-user-obj.c @@ -40,6 +40,9 @@ #include "hw/remote/machine.h" #include "qapi/error.h" #include "qapi/qapi-visit-sockets.h" +#include "qemu/notify.h" +#include "sysemu/sysemu.h" +#include "libvfio-user.h" =20 #define TYPE_VFU_OBJECT "x-vfio-user-server" OBJECT_DECLARE_TYPE(VfuObject, VfuObjectClass, VFU_OBJECT) @@ -73,8 +76,14 @@ struct VfuObject { char *device; =20 Error *err; + + Notifier machine_done; + + vfu_ctx_t *vfu_ctx; }; =20 +static void vfu_object_init_ctx(VfuObject *o, Error **errp); + static bool vfu_object_auto_shutdown(void) { bool auto_shutdown =3D true; @@ -107,6 +116,11 @@ static void vfu_object_set_socket(Object *obj, Visitor= *v, const char *name, { VfuObject *o =3D VFU_OBJECT(obj); =20 + if (o->vfu_ctx) { + error_setg(errp, "vfu: Unable to set socket property - server busy= "); + return; + } + qapi_free_SocketAddress(o->socket); =20 o->socket =3D NULL; @@ -122,17 +136,83 @@ static void vfu_object_set_socket(Object *obj, Visito= r *v, const char *name, } =20 trace_vfu_prop("socket", o->socket->u.q_unix.path); + + vfu_object_init_ctx(o, errp); } =20 static void vfu_object_set_device(Object *obj, const char *str, Error **er= rp) { VfuObject *o =3D VFU_OBJECT(obj); =20 + if (o->vfu_ctx) { + error_setg(errp, "vfu: Unable to set device property - server busy= "); + return; + } + g_free(o->device); =20 o->device =3D g_strdup(str); =20 trace_vfu_prop("device", str); + + vfu_object_init_ctx(o, errp); +} + +/* + * TYPE_VFU_OBJECT depends on the availability of the 'socket' and 'device' + * properties. It also depends on devices instantiated in QEMU. These + * dependencies are not available during the instance_init phase of this + * object's life-cycle. As such, the server is initialized after the + * machine is setup. machine_init_done_notifier notifies TYPE_VFU_OBJECT + * when the machine is setup, and the dependencies are available. + */ +static void vfu_object_machine_done(Notifier *notifier, void *data) +{ + VfuObject *o =3D container_of(notifier, VfuObject, machine_done); + Error *err =3D NULL; + + vfu_object_init_ctx(o, &err); + + if (err) { + error_propagate(&error_abort, err); + } +} + +/** + * vfu_object_init_ctx: Create and initialize libvfio-user context. Add + * an unplug blocker for the associated PCI device. Setup a FD handler + * to process incoming messages in the context's socket. + * + * The socket and device properties are mandatory, and this function + * will not create the context without them - the setters for these + * properties should call this function when the property is set. The + * machine should also be ready when this function is invoked - it is + * because QEMU objects are initialized before devices, and the + * associated PCI device wouldn't be available at the object + * initialization time. Until these conditions are satisfied, this + * function would return early without performing any task. + */ +static void vfu_object_init_ctx(VfuObject *o, Error **errp) +{ + ERRP_GUARD(); + + if (o->vfu_ctx || !o->socket || !o->device || + !phase_check(PHASE_MACHINE_READY)) { + return; + } + + if (o->err) { + error_propagate(errp, o->err); + o->err =3D NULL; + return; + } + + o->vfu_ctx =3D vfu_create_ctx(VFU_TRANS_SOCK, o->socket->u.q_unix.path= , 0, + o, VFU_DEV_TYPE_PCI); + if (o->vfu_ctx =3D=3D NULL) { + error_setg(errp, "vfu: Failed to create context - %s", strerror(er= rno)); + return; + } } =20 static void vfu_object_init(Object *obj) @@ -147,6 +227,12 @@ static void vfu_object_init(Object *obj) TYPE_VFU_OBJECT, TYPE_REMOTE_MACHINE); return; } + + if (!phase_check(PHASE_MACHINE_READY)) { + o->machine_done.notify =3D vfu_object_machine_done; + qemu_add_machine_init_done_notifier(&o->machine_done); + } + } =20 static void vfu_object_finalize(Object *obj) @@ -160,6 +246,11 @@ static void vfu_object_finalize(Object *obj) =20 o->socket =3D NULL; =20 + if (o->vfu_ctx) { + vfu_destroy_ctx(o->vfu_ctx); + o->vfu_ctx =3D NULL; + } + g_free(o->device); =20 o->device =3D NULL; @@ -167,6 +258,11 @@ static void vfu_object_finalize(Object *obj) if (!k->nr_devs && vfu_object_auto_shutdown()) { qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); } + + if (o->machine_done.notify) { + qemu_remove_machine_init_done_notifier(&o->machine_done); + o->machine_done.notify =3D NULL; + } } =20 static void vfu_object_class_init(ObjectClass *klass, void *data) --=20 2.20.1 From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653407526; cv=pass; d=zohomail.com; s=zohoarc; b=hK5psmhKK7NO1nySY6xQMpWmq4LQCEzacVLcqGLGn8tx+6qrUUIOWU/XG/a0dpxTHf4eS/zOXos6nmybPjZ16rTNUI7RE2na9xez0/ktow9k1J1qRmnWNpnPKAHbm8w/mm6wGeNX1+6865RIvdtcliNfyeCnHA0cuimJWd81KHo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653407526; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=tB4tSjLFXis3Dh7vLjuloDknQ3HMz27ejhAtdDiTzcE=; b=ePfQrFQLuzPh7zheM5sp+J+jQ2SuaNDXs8NFryjhrLui1lIY2nPCLh1yVl56vlDfgAPR0+4zY3iwh/WCsx+uoNWLSa1POZ+cdvHDaHAnQCiRBDk6VGTdvckvYQJt46qHQbMVOngVOHMAPSwFJai5pAVbhsJudssvRadM6YZjvNc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1653407526768866.6993132478515; Tue, 24 May 2022 08:52:06 -0700 (PDT) Received: from localhost ([::1]:59452 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntWpJ-0008S5-Hh for importer2@patchew.org; Tue, 24 May 2022 11:52:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39848) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWV8-00085U-NX for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:14 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:21224) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWV5-0003Pv-KD for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:14 -0400 Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFF3S6010172; Tue, 24 May 2022 15:31:06 GMT Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6rmtxrhw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:05 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFSHU2001101; Tue, 24 May 2022 15:31:05 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam08lp2042.outbound.protection.outlook.com [104.47.74.42]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3g6ph2h2f4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:05 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:31:02 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:31:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=tB4tSjLFXis3Dh7vLjuloDknQ3HMz27ejhAtdDiTzcE=; b=AgB1flx7ystC49dSfjuShKdugQjgnsguML1ewKpbZHlM5qB9YlvqAzYuIXzPa9mBZMD3 g/voQBpKvcxF5BWJmVKcdWITrRnENgaG1dfzjEcIj6jgO3u7F9h5ZQ7Ht5g5v9GjHAXi naNFSGGlLlQImzBjjDp9g+UUv/a5W2RqdJG4bhvJT+1k5BC59vtAdsv63Ky5UwnQYAb3 WXZlBDtxaFnLkAn+Wgkprdk8fMirmXTBe+Fom2amN1k3da16VTO4XqvH8Frz0FVxbdBy dQ6oPXrbOYUGD2vI7AC6MgSAsOrqaXLQ9fwks1X1oLcmbwTDZ1SFCP3qJl+AGWzWYU3m yg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nRLzFXuZJ/yZM8UbBOP85dWjlf0WRupIX6uaRTktD+jS3MqLYhJXwbAAv63fQlsXOru4aNsv865tsFHhbykA2T/fGhllhnf4dC3WrNe0Tq6LGRjG8Uw2Aahuq/eKZD+OIO4bd1I/J74DdS4Y6yzIz/Ryznx8MCYObp/0uN36HRak/DIQjDoq8vUg5/6fWV95khcFQW5C3u/fsnTQrka5ekZNEt21nLG6RWe4oLL0n+pgfdppg110mLLctA2XyD+F2bytXFtLCWsVK77YM4GkdvSjTXxyQiDvElC5+In8EpcJO3p5xaUzbTsJnZTF5h0/t0tbkqeTB9QWCUeCpkQNPA== 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=tB4tSjLFXis3Dh7vLjuloDknQ3HMz27ejhAtdDiTzcE=; b=ZxiomGrEd37BGgKMaA36qcm0bTXKuZWmfypJU7RTlkFWCIDtbICubZTluZZYI/NJLt/cJDAMUyKw8qfDuzTZG/+ikb395iwolg+JlfW6pHYPcJfUztiwv1b5arBHw3zls3V8g+MDXj9A0g4+1m5WdX1loG55tilKtb5+HdgL5E++c5Kgq8sF00EWJxPOtezv1MBoy2AbmXQYHDvyqcz+yli6SQ2VlEtrivHZ4KZDX62eeJM8XHKGAmsp6pD/YquyvY8ajAHafif26pgQd6+CFvSjdC+9qujeVxu6Dk6TutALEq6eHoFBEWiAsFkce42L3cuZJaZ9FNiobPsAPNWlKQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tB4tSjLFXis3Dh7vLjuloDknQ3HMz27ejhAtdDiTzcE=; b=SuRLJnqRsr226BPBEQHJGZLBed/T2/8iyOin6k+ZzGVPlWIvGokVcIxbV7J7tny3i5lRaz1NuyQanLn8xwg9tzLWtVd0sPbPb0x8jlueUaTXoUCpv0Za8MRMjfve7r6hQm5QC3hel42RFgLwlsEVGCJk9jS+p+1pnJFCjBr/DXU= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 07/14] vfio-user: find and init PCI device Date: Tue, 24 May 2022 11:30:26 -0400 Message-Id: <6cc3abf55fce74eaa7a0f596cf3e09b4426fe98f.1653404595.git.jag.raman@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3e1f33d7-e4dd-4a0e-edd3-08da3d9a6907 X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: LtBP99NLPdOJBckoegRGaPfKfP+bAE2l3Ei0Z1kDnRNn5Iyoyc1yhKGuZP+vh961Azergio3EVZZBWLhD3wBdmTZvKIFNPTPCZQsZLEFtZ5hUBcEP9Txk9mG7e4BNovZ8cYCElWFGd1RRWQJAcKSw2sr3rnp2EfOv0JXDSiQtpueB29SOtLPt7QQnd4HcLVfXLGmrECxqESYF5PEvaBAGg+4AKxPcBqn33PQYNKdqBXPTHZ0ax9UNLT/h9kYBick4X0H+Ff/As9WxffAWgq7pZW+cb9eFp1PtifTdm4uuQkzsu9NUVG2LWtcbYXrjoAMDltztyBrKwTrdNSQc/zyBEmJ59rEa7gz60nEumRJLYWdKO2uiyW8vr2+tjxJZB6+r7YhaickPvVDt4GKBwy5ASd6HD+ecMo28aBC73AFPdZ7FXWllNhoQR+ry+t52l9Esj0I0pIsLAw0YW6YAx6E4tRLgaQJhYk6TLp0iK8owA6fMqlly8/O+NPDfbWZkZuGFgToX3+KeLZbo4eSDVAlQ5mtrHsms9a1DfatTZPxTZI+zxohJR3/Wm47mLVil7ReoCB5HR/dfM7Gr77zeqgzw7xzKEws6U7u8LDIKfWyow0Z49q9WYGgfdJu66whDBArqhqkk/Qihb0L9dzPVkheCULOdcgm1cbdRazT++M0On+p4MxqQvW2rSafkArZ0MYrO9A+B+7IwUdpEhQu61EfUw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(83380400001)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sbm3lrL9tKikzqo9y49Vw9c4RbjwXUanTQCNXDb0mE+zaIEYp7zydD542pL2?= =?us-ascii?Q?61zvapNbRlyBxZPEyYlmn8wmlcIs/aDOtvjvHyYOBBUyXouQNy/UtjjvB2Ww?= =?us-ascii?Q?BLDKRogBScx1HmfR9vpD+58Rqu4dtQPWCUmq2mwbh3EMwjGqme8OlM+qsIX5?= =?us-ascii?Q?widGPJ6M5UAFfvO+sFNFiBeY+ZB4ROfeaBSlhbCFE9nxRIPXYIMQ/D40zlGS?= =?us-ascii?Q?yI5hTyhuEmJAcFCIWlmjQezDbDL3ovjhO93XF3seafSlvt7J44h/d1YqMHRN?= =?us-ascii?Q?3T+AsSuSWCJl9IevU4BTacKKNUcXp202BfzcUJWV8xYl4f9WBN+Rya60wrpU?= =?us-ascii?Q?udnDvkgKy7vcRrvzWfKw4SNHk3MtSSm7fLsjK4DBtiJ7CkRGeYq3cJxLICn9?= =?us-ascii?Q?uyQSQ1CDsXVgoXyzTbg9gOIOBaLp+HkLao9Viix2AeHZOdK2qNQ+RLDqxJyC?= =?us-ascii?Q?NKmEI6qDPs/7nVoWtk5h3QQCzMUZJJE20yVdkX0UdG8L0dmLCB5PCNqKwZwX?= =?us-ascii?Q?DfHI6gA/YRTh+nMrFBTW83c2F4NMYgbY5AxGLBf9czwBzcHUskgX9Zfp/n03?= =?us-ascii?Q?Vy1hQOTaU/3gUObSO7I1YFMd2O3Wp9ydhvLQc87y+TOUxLW/qB+Y3bxdxO2B?= =?us-ascii?Q?Tb84T65QuykdW9V7/yfhVeyfBEb+QWO3EA4vokzTrJsLEyqdRw+p7ogJCCGB?= =?us-ascii?Q?6xwYIzX0vLwy9u0GwYDGW2/KnwGrQ7JdqonhlkmjjfpV13IeYJKeer474x60?= =?us-ascii?Q?H1ZDxrj+nE2gMFBLLAcOoyKGVeQ+I3ESblC3nn2Z2eJBRAlX8RXsgfHFQHJv?= =?us-ascii?Q?5YKF10XG/5YZsxooMD3XeqsmEETzJOiT+u6vIdCt/o6zU69J2+7bm3706U5H?= =?us-ascii?Q?Nq4rltnJome1ctPqnTf07U7U52pH7RlzJXuOTrk0u8783B0jYq7kwQGGI8IX?= =?us-ascii?Q?ovkoikt/HZUjR4/mZgfMa5zKrXG/ZvvbrPc9uFA9Qdvgu+6OD17x98VZjBEf?= =?us-ascii?Q?J+ITvurHs5EtSgJShIVb+KVPRaf/YUtb8Bv1ZWTWNAu9wQbu2B3Oixtjkzrv?= =?us-ascii?Q?g7gna0nDq9a8EnC3ERZrjbrr1q0sGEwk8JrtJSL/GJaVDXUrBb9+dolufNUp?= =?us-ascii?Q?AYC/hQ0BHr7PkHhoGTd6E4wgJQD1njwSlvl9/CUX4KneLc/KDWrrvZxK3rzi?= =?us-ascii?Q?dWkhVzZEGK3sN/sDFzosuWtaFJql4B940dAzBslR/NhkcKH6x32rzCLmw0Cu?= =?us-ascii?Q?PXVqQGaj/jhuXi1dNOvXWAxyYNjoz91ZTj0RKNRVbe9/1qJm2YYGj728QIPJ?= =?us-ascii?Q?N1QhExlOExlm9SNs359qbVnBTWQaBc3haSukKSBQHyM8JE1UyFAAOMc6cmTO?= =?us-ascii?Q?6/KS9hg4rde3pJoMWMt5yCMXxCZgjfErUYT6XBNFf92qQ+8jfFFq7uNJIBfo?= =?us-ascii?Q?kAFzssVvfi1Z3L/gs645CzSgzNag/FjOA1nz69rVKa39qNNol/rzR+mePOia?= =?us-ascii?Q?2blvYNp/871BcwX0gnmegojiV740eKCgAt73Bq6+Byo76eb72867iYsWYE/+?= =?us-ascii?Q?Xrxbv4b/1wWjlbnLY+JypWVU0lJC3+ucj31U+gl9TI8AMEstprWeDuCR9/n1?= =?us-ascii?Q?wnmCxvoOpkutITAhmNJ2YVfsGwj3XlgjUVRj5rKULhMJQdUnNOsNpPmwDNb6?= =?us-ascii?Q?aQr0obre6jSPpkGupfe7DYBuzpWaOijRHiJEZ6FFCkT1L6JMCKBtuZOgQ6+v?= =?us-ascii?Q?0gVEB4Vhxw=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e1f33d7-e4dd-4a0e-edd3-08da3d9a6907 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:31:02.6637 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: i8RhoDKoy4MeEjEmVKL/axvslCqrGCKPft9V6N+Nu5AVAYaL8QERIDU1itGfwtqCrd7eLVbQOcW4K42rRNSxwA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 adultscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-GUID: B5Q9GKGHohA0q_Dhlcr04sOXJtt2Mfd2 X-Proofpoint-ORIG-GUID: B5Q9GKGHohA0q_Dhlcr04sOXJtt2Mfd2 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.165.32; envelope-from=jag.raman@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653407528679100001 Content-Type: text/plain; charset="utf-8" Find the PCI device with specified id. Initialize the device context with the QEMU PCI device Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- hw/remote/vfio-user-obj.c | 67 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c index 68aac0c2b9..fdee274933 100644 --- a/hw/remote/vfio-user-obj.c +++ b/hw/remote/vfio-user-obj.c @@ -43,6 +43,8 @@ #include "qemu/notify.h" #include "sysemu/sysemu.h" #include "libvfio-user.h" +#include "hw/qdev-core.h" +#include "hw/pci/pci.h" =20 #define TYPE_VFU_OBJECT "x-vfio-user-server" OBJECT_DECLARE_TYPE(VfuObject, VfuObjectClass, VFU_OBJECT) @@ -80,6 +82,10 @@ struct VfuObject { Notifier machine_done; =20 vfu_ctx_t *vfu_ctx; + + PCIDevice *pci_dev; + + Error *unplug_blocker; }; =20 static void vfu_object_init_ctx(VfuObject *o, Error **errp); @@ -195,6 +201,9 @@ static void vfu_object_machine_done(Notifier *notifier,= void *data) static void vfu_object_init_ctx(VfuObject *o, Error **errp) { ERRP_GUARD(); + DeviceState *dev =3D NULL; + vfu_pci_type_t pci_type =3D VFU_PCI_TYPE_CONVENTIONAL; + int ret; =20 if (o->vfu_ctx || !o->socket || !o->device || !phase_check(PHASE_MACHINE_READY)) { @@ -213,6 +222,53 @@ static void vfu_object_init_ctx(VfuObject *o, Error **= errp) error_setg(errp, "vfu: Failed to create context - %s", strerror(er= rno)); return; } + + dev =3D qdev_find_recursive(sysbus_get_default(), o->device); + if (dev =3D=3D NULL) { + error_setg(errp, "vfu: Device %s not found", o->device); + goto fail; + } + + if (!object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) { + error_setg(errp, "vfu: %s not a PCI device", o->device); + goto fail; + } + + o->pci_dev =3D PCI_DEVICE(dev); + + object_ref(OBJECT(o->pci_dev)); + + if (pci_is_express(o->pci_dev)) { + pci_type =3D VFU_PCI_TYPE_EXPRESS; + } + + ret =3D vfu_pci_init(o->vfu_ctx, pci_type, PCI_HEADER_TYPE_NORMAL, 0); + if (ret < 0) { + error_setg(errp, + "vfu: Failed to attach PCI device %s to context - %s", + o->device, strerror(errno)); + goto fail; + } + + error_setg(&o->unplug_blocker, + "vfu: %s for %s must be deleted before unplugging", + TYPE_VFU_OBJECT, o->device); + qdev_add_unplug_blocker(DEVICE(o->pci_dev), o->unplug_blocker); + + return; + +fail: + vfu_destroy_ctx(o->vfu_ctx); + if (o->unplug_blocker && o->pci_dev) { + qdev_del_unplug_blocker(DEVICE(o->pci_dev), o->unplug_blocker); + error_free(o->unplug_blocker); + o->unplug_blocker =3D NULL; + } + if (o->pci_dev) { + object_unref(OBJECT(o->pci_dev)); + o->pci_dev =3D NULL; + } + o->vfu_ctx =3D NULL; } =20 static void vfu_object_init(Object *obj) @@ -255,6 +311,17 @@ static void vfu_object_finalize(Object *obj) =20 o->device =3D NULL; =20 + if (o->unplug_blocker && o->pci_dev) { + qdev_del_unplug_blocker(DEVICE(o->pci_dev), o->unplug_blocker); + error_free(o->unplug_blocker); + o->unplug_blocker =3D NULL; + } + + if (o->pci_dev) { + object_unref(OBJECT(o->pci_dev)); + o->pci_dev =3D NULL; + } + if (!k->nr_devs && vfu_object_auto_shutdown()) { qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); } --=20 2.20.1 From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653407890; cv=pass; d=zohomail.com; s=zohoarc; b=l5SpXyeIQmGvFaw3SZKSF+nI44rV4C1zCIUPb9SVgfPKRvFAf33S0zSamV0wj6OFwBLUQQZ2nJAfxtkMH8lduOUUtVvJMTdSf6X3himzKtr9I6fo+8irJHjdNsg6TkJTLpRfLGCLvv1cKUVJt0Y3Rrm+/2t7VQfkm5zSU9K1h2A= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653407890; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=j8vynFuMKk+VtVYki2MYIQ22Ib/yp/L8kwk9dzLMwE4=; b=Cs9pexF9SMEM1pLx4tbFSpBAp784mzjaE4GOpdnjtm069yiMSjee0zy9MTPz8mOqYbRu9NDGo32Jv2WTlu1ZDgeQlWGLOH4/g7W76MPSqNdqmBGTuQUwPCB+zfMqVeE5T/6AFEyuZKZtEYRDkXRvR9anfJwKl3zvHObHfSFlR7c= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1653407890821221.78002042190508; Tue, 24 May 2022 08:58:10 -0700 (PDT) Received: from localhost ([::1]:40202 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntWv9-0006X6-Bn for importer2@patchew.org; Tue, 24 May 2022 11:58:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39864) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWV9-000887-Iu for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:15 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:23972) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWV6-0003Qa-5x for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:15 -0400 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFKeGP018506; Tue, 24 May 2022 15:31:09 GMT Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6qps6tjg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:09 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFGUop024248; Tue, 24 May 2022 15:31:08 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam08lp2041.outbound.protection.outlook.com [104.47.74.41]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3g6ph2rj6b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:08 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:31:05 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:31:05 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=j8vynFuMKk+VtVYki2MYIQ22Ib/yp/L8kwk9dzLMwE4=; b=VSKZfoWTKLvHB8Kr1zBUc7E4AjHsBQ788fib9x0YQWvqMTNhGYCmXdVjZFJwRw2DLaFa CIFQFInNbautekDhPw1LvIeTFAduEGl2EyBjuVfZ3Dsm5o+9Wfzq7lUGzj8IZIpcM4Jr 32h19Iy+P/1aeyfU8YTDsd1+bvu48oEdNV5rkTgpPPLlRGy9r5g0qagLnpE/F7vyiet+ Gh7ehic6UGqP6cC6E0eTlAGL02qCc8gnpFJPTAQOWDOL5X1wf3flDXxEokTGieHxiMdX TQ/9j3llkwDcwP8sUYKggPJc9xIL0K9SmQjEP3aLsKh4bmmZkdQOTjZPeBPMQzksVagp 7w== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Axmyaor3j1ElCDMHmizh+mnr3ES12lb/mHvchymVnUrI9ybO6Z7AUg17bClHB+L7R1cVYjhSA1bhXhmSSCIzpppXWLacoxX05JlGPd2l7fBayymGMgKcHEsEh7MhWG6Z6gXYHSFtIt651DqnI9ELkGZp/1gh2e7q3BzDl0HIHYRmKNANj5zamE8EKKKMGKRmcgBdnPLwYXORB6jQZFHRyLBXNxEc33U4G1WentRy6DxI8aU3SDCzO/mxiJelNQU2+cNCrFXZPtkeUUIi5Y75XjTf7NL3XDZwonXGzsOUflgKKLU1cTlku9rWaCCtB66Mj+ujEUKTmLd6Z/J8bwYJYQ== 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=j8vynFuMKk+VtVYki2MYIQ22Ib/yp/L8kwk9dzLMwE4=; b=n9OefYjww/IvTl6PfFS0llbbydNuMeLTQuYYH4PIh2F7SVVP1C/24/Z730mTz0Xjm5JOeMSTzt+bbB6jPnpagyWicwEsh+jVFrdqkqDqT7l+cd96nz3bY6Q7w3Lu1yvkiK2Ih/p7uik3IAPxnFBnOFopaQappmaAMqCLHNOEiwwlgzXY0pj+5A3WLZkonEwvg7AenM0R311d6FjYPK92pGEooE6b+1Ksw6ZiOCCfQMx4YkwxAotGY5/FN9yjssx3Kek8JzoXX3Pl5FRHCFVa/At13VCLdXd+ndSpdb+0aN64qyUnb1an9foC97fQs2vFaxBz8X1ZH/TNn5OhZgkixw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j8vynFuMKk+VtVYki2MYIQ22Ib/yp/L8kwk9dzLMwE4=; b=S1Y+O3CMauzGCUgW5fJ4LWH0o70GSml9WVAUUDiP90dJsXqegIMgV2EKY9GTUjJ97F3yhssdsz9gBwJ/rMhqoAYBo84TkXyQ0i5Yd/03OFRAS8Xozfemhhzuirvmg+tpQb7Zi4deaLgBLDdI07Y6JcVj/JsAcKqkYanU2kxtlGI= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 08/14] vfio-user: run vfio-user context Date: Tue, 24 May 2022 11:30:27 -0400 Message-Id: <112c34713cbc8c0e917384288a10d7e3dfec941f.1653404595.git.jag.raman@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 78dd6afb-c4b0-418d-e23d-08da3d9a6aeb X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: ncI6emB/SD+bHdIEZ8k8X/iT/3slPolRxUZrwtclksu61CbRwlI1evpxD5em6XYh9QpBYlISPVlAfXzr96smJ33JpXTougVF+hWG3VOhx5H16gr2oF+2LqGFZ3c4U2P+UbC6JAiYk8Hunbuu0oJbGwA/R6zYDglq3AyG1HB0POZdKOU0iImnLN2Lh8fsWEjhQ7sRZxl5YrQD4u5VSouE4k6/qyDtnzJrxd780PFh5K1uz2usLor9f0J1QAGj9TjzHOOSfiK9NcrabeFe09J/lxVTaAw94HPoQJOiXaeDeSEyt666tPbO/snsAIL4mLj8Lw8yaxPekL3hevhWJ5wQl5RSDd1U7LbtP3kcqo4IamRvsd3s3HdA6XZljwVy7B8TzD3d8yEXt5ZwPQ428/Z2G3egiL6bCn+xpPBqlaHVFOhRlrKRsEonR7GAa1RGJZ2nrNRzFYDWo8rCKeGNzzAw29StlhryuyuEPF3QeNrOQM9ZrzBoiZNobJe/uLQply51x41rBiLO1P6k/kH0k5x20o0SufWDMS3QLh98UAGoD+ENbRm8/g0tb3ugNtELiSIeZfrcZH0AAOURfFddobzcBU0ndXnEpX2tyRI1qp72dUFdX50nfzxdR++NTYQZww6SRwBRcp3+AxxqN6jZ6VQmk8vznLrnqLRUxXh6z5LCv0jXnm5ZGsfc2SxpjKfoONGD3GlYRrKdnV08dIdS+Uf6sg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(83380400001)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3aBr4Widizk3wdBNRb05YtqJiJx5bmNohFS7JR+UdSBNTB57c/e38kROf/MH?= =?us-ascii?Q?JVerbBQmgL8MiaT+kTJsBG6UaMQTvC2cD1fccR15O2zasUipGjSyPWkSpbtE?= =?us-ascii?Q?O4bG480iFQyfClfGVYvGBNgrALgtDwYI7W4cLWCREPFLuk1398RbIKw+GRZo?= =?us-ascii?Q?vdxLiXbQtsWJ1ZztlYdqavIx8euhrBOy/FhKMCM9Zr3MXRodFAU9z704yM7w?= =?us-ascii?Q?DBw4fPg4n+4vB0rAQ1U8dQkQi7JtCuj1/M6svfDgCYg93i2keawvMzAWSWTk?= =?us-ascii?Q?W1KCxeStQHpy5rthwwM3371qsIzx4zWlpTXpMtspnDZlMSO6QIMaqdcpxvZH?= =?us-ascii?Q?7firw8nWsokQFJxp9z/Nqfqz7Hy4xcgWEmh2N+ghDgrKZyJS6GnfSuN1i/hJ?= =?us-ascii?Q?a0IteXaptBhcSCzDzKWCMAS8Gd5ecpYJqTgrKedmWUF3qHvTPGWIzCX9CR+F?= =?us-ascii?Q?MkV6bVlqG9KU+awH9NAq96AXiVlwlchaIC2emmW0/Q/eHt6xiEjiFxSQuhXx?= =?us-ascii?Q?tAxtB0zrRP6jjyg5dfU4eiHNu1jSUweAhDeuAHZrW80AOx5DGgNVnxN48LTa?= =?us-ascii?Q?5EmDTtx+sINSDWnpRpNw0QsxFcLUC2cGuklUSkBBR0858RyFCRqXGtE/xgAL?= =?us-ascii?Q?1HLs2dqqAAbi1U4j2fp2CjhPdYQVIyJy7EV/lppOLaGCbFCFvaF8NJaFfAf0?= =?us-ascii?Q?vcvLVEp5AVtKr5uNPVb+MZNIxEtPqM4/OvImqLyNMJBblNAvPwI06dhqdB2H?= =?us-ascii?Q?7MZWyNOogJlXHB3t1+PBEYUXXdag0j7BvPVBOf1WIXkdl3jpPCAnPlCnqQ4y?= =?us-ascii?Q?5+nushLpD69wRYh/fIPh+LeiXJHbhUKBMgFZnv3qnMoMqmQVeXnG2rU0eThr?= =?us-ascii?Q?QpCWyER4FC4t+pmuiZd9Nc/BGemdV2q1jD0Zj0J3oSWCsEDeMfkJsIyk2mKP?= =?us-ascii?Q?CmHtanLPnOhDPch70glKOSELUyvKfCBTzSf7VFFpK/Fr5G03JvzshRg42MQb?= =?us-ascii?Q?HQqJKxilUk9lU66uGh+WtJ11Psofcgjni7Z28tmDiaT/cfIqG5OGu+d1g6bI?= =?us-ascii?Q?J/fWXG5eJ8xu+Cw0rWAD8uQEO6yYu0TcJ+qQTrSPZyhIUyLo+cUZHZ3HM19a?= =?us-ascii?Q?AFKODPLTil+oo8rDAPrj2DfeY7qD5ct52QyWuISdqDZCbYhc+87UZGyTGHCb?= =?us-ascii?Q?WTGogHi9pmPLcw0nEvj6Syni78rl3Ivrjwd/EWEy5eoJMu9ILKRc5f2+Q+gh?= =?us-ascii?Q?XT/TFw9u1vgT04DwuoTihzkR7wyigLDya5NHWvtejgCJ9fkxHYb+DwpCcKYn?= =?us-ascii?Q?/gxRnBRz1qI2ZXaOuVz/paw+na2bnyGd764LeNL/oc1jxUjsywIo8fUjvR67?= =?us-ascii?Q?lK+Gsnr0rKUpBEUkiXoWKH4lt3nsUV+b8SjmUqdbEAaA0sHJh1fmLNjscNO9?= =?us-ascii?Q?MgDFnUdtpe+ZRmvOBq3u3iKQfoaG2VPeGuPylSq8DN0QNi/sr+2LfwH+ADu4?= =?us-ascii?Q?o5XvrV/VbDNZ9vG5Cj7vLGterVUf9gPO4/1tpZxwoekoQv3vw6Dvi42TdtVI?= =?us-ascii?Q?ZerbJ3VL6Y3qtrFPf+BqYX/I2Otcvt/SIeyA5xAjBDnHoFw8LmFrJFcFavWY?= =?us-ascii?Q?eVrAF67iDald6JeEkJw0Kz9bt3jdmaF3G2WvTS4CWUULzGC/IYIU5qFOQb/Y?= =?us-ascii?Q?kw0acz/HWqxOh3Ci0uVZVrmxMqwXBTx2RcfqWgnUfuUK3m/cLFYCMuh3zMv0?= =?us-ascii?Q?e6aHL7RimQ=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 78dd6afb-c4b0-418d-e23d-08da3d9a6aeb X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:31:05.7572 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +mIl0UKKsumIldBQYJ8UoD+O8d4RLS/NEaetz135sjsK4G027TshObxVRqcnaBXSyqoVYP8H0WxOf8eS/PH94w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 mlxscore=0 phishscore=0 mlxlogscore=999 adultscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-ORIG-GUID: V_L1TAGeULHH4mEf0yfUV7SD8JRgLM_a X-Proofpoint-GUID: V_L1TAGeULHH4mEf0yfUV7SD8JRgLM_a Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.177.32; envelope-from=jag.raman@oracle.com; helo=mx0b-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653407892013100001 Content-Type: text/plain; charset="utf-8" Setup a handler to run vfio-user context. The context is driven by messages to the file descriptor associated with it - get the fd for the context and hook up the handler with it Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- qapi/misc.json | 31 ++++++++++++ hw/remote/vfio-user-obj.c | 104 +++++++++++++++++++++++++++++++++++++- 2 files changed, 134 insertions(+), 1 deletion(-) diff --git a/qapi/misc.json b/qapi/misc.json index 45344483cd..27ef5a2b20 100644 --- a/qapi/misc.json +++ b/qapi/misc.json @@ -553,3 +553,34 @@ ## { 'event': 'RTC_CHANGE', 'data': { 'offset': 'int', 'qom-path': 'str' } } + +## +# @VFU_CLIENT_HANGUP: +# +# Emitted when the client of a TYPE_VFIO_USER_SERVER closes the +# communication channel +# +# @vfu-id: ID of the TYPE_VFIO_USER_SERVER object. It is the last component +# of @vfu-qom-path referenced below +# +# @vfu-qom-path: path to the TYPE_VFIO_USER_SERVER object in the QOM tree +# +# @dev-id: ID of attached PCI device +# +# @dev-qom-path: path to attached PCI device in the QOM tree +# +# Since: 7.1 +# +# Example: +# +# <- { "event": "VFU_CLIENT_HANGUP", +# "data": { "vfu-id": "vfu1", +# "vfu-qom-path": "/objects/vfu1", +# "dev-id": "sas1", +# "dev-qom-path": "/machine/peripheral/sas1" }, +# "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } +# +## +{ 'event': 'VFU_CLIENT_HANGUP', + 'data': { 'vfu-id': 'str', 'vfu-qom-path': 'str', + 'dev-id': 'str', 'dev-qom-path': 'str' } } diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c index fdee274933..fb5c46331c 100644 --- a/hw/remote/vfio-user-obj.c +++ b/hw/remote/vfio-user-obj.c @@ -27,6 +27,9 @@ * * device - id of a device on the server, a required option. PCI devices * alone are supported presently. + * + * notes - x-vfio-user-server could block IO and monitor during the + * initialization phase. */ =20 #include "qemu/osdep.h" @@ -40,11 +43,14 @@ #include "hw/remote/machine.h" #include "qapi/error.h" #include "qapi/qapi-visit-sockets.h" +#include "qapi/qapi-events-misc.h" #include "qemu/notify.h" +#include "qemu/thread.h" #include "sysemu/sysemu.h" #include "libvfio-user.h" #include "hw/qdev-core.h" #include "hw/pci/pci.h" +#include "qemu/timer.h" =20 #define TYPE_VFU_OBJECT "x-vfio-user-server" OBJECT_DECLARE_TYPE(VfuObject, VfuObjectClass, VFU_OBJECT) @@ -86,6 +92,8 @@ struct VfuObject { PCIDevice *pci_dev; =20 Error *unplug_blocker; + + int vfu_poll_fd; }; =20 static void vfu_object_init_ctx(VfuObject *o, Error **errp); @@ -164,6 +172,78 @@ static void vfu_object_set_device(Object *obj, const c= har *str, Error **errp) vfu_object_init_ctx(o, errp); } =20 +static void vfu_object_ctx_run(void *opaque) +{ + VfuObject *o =3D opaque; + const char *vfu_id; + char *vfu_path, *pci_dev_path; + int ret =3D -1; + + while (ret !=3D 0) { + ret =3D vfu_run_ctx(o->vfu_ctx); + if (ret < 0) { + if (errno =3D=3D EINTR) { + continue; + } else if (errno =3D=3D ENOTCONN) { + vfu_id =3D object_get_canonical_path_component(OBJECT(o)); + vfu_path =3D object_get_canonical_path(OBJECT(o)); + g_assert(o->pci_dev); + pci_dev_path =3D object_get_canonical_path(OBJECT(o->pci_d= ev)); + /* o->device is a required property and is non-NULL here = */ + g_assert(o->device); + qapi_event_send_vfu_client_hangup(vfu_id, vfu_path, + o->device, pci_dev_path); + qemu_set_fd_handler(o->vfu_poll_fd, NULL, NULL, NULL); + o->vfu_poll_fd =3D -1; + object_unparent(OBJECT(o)); + g_free(vfu_path); + g_free(pci_dev_path); + break; + } else { + VFU_OBJECT_ERROR(o, "vfu: Failed to run device %s - %s", + o->device, strerror(errno)); + break; + } + } + } +} + +static void vfu_object_attach_ctx(void *opaque) +{ + VfuObject *o =3D opaque; + GPollFD pfds[1]; + int ret; + + qemu_set_fd_handler(o->vfu_poll_fd, NULL, NULL, NULL); + + pfds[0].fd =3D o->vfu_poll_fd; + pfds[0].events =3D G_IO_IN | G_IO_HUP | G_IO_ERR; + +retry_attach: + ret =3D vfu_attach_ctx(o->vfu_ctx); + if (ret < 0 && (errno =3D=3D EAGAIN || errno =3D=3D EWOULDBLOCK)) { + /** + * vfu_object_attach_ctx can block QEMU's main loop + * during attach - the monitor and other IO + * could be unresponsive during this time. + */ + (void)qemu_poll_ns(pfds, 1, 500 * (int64_t)SCALE_MS); + goto retry_attach; + } else if (ret < 0) { + VFU_OBJECT_ERROR(o, "vfu: Failed to attach device %s to context - = %s", + o->device, strerror(errno)); + return; + } + + o->vfu_poll_fd =3D vfu_get_poll_fd(o->vfu_ctx); + if (o->vfu_poll_fd < 0) { + VFU_OBJECT_ERROR(o, "vfu: Failed to get poll fd %s", o->device); + return; + } + + qemu_set_fd_handler(o->vfu_poll_fd, vfu_object_ctx_run, NULL, o); +} + /* * TYPE_VFU_OBJECT depends on the availability of the 'socket' and 'device' * properties. It also depends on devices instantiated in QEMU. These @@ -216,7 +296,8 @@ static void vfu_object_init_ctx(VfuObject *o, Error **e= rrp) return; } =20 - o->vfu_ctx =3D vfu_create_ctx(VFU_TRANS_SOCK, o->socket->u.q_unix.path= , 0, + o->vfu_ctx =3D vfu_create_ctx(VFU_TRANS_SOCK, o->socket->u.q_unix.path, + LIBVFIO_USER_FLAG_ATTACH_NB, o, VFU_DEV_TYPE_PCI); if (o->vfu_ctx =3D=3D NULL) { error_setg(errp, "vfu: Failed to create context - %s", strerror(er= rno)); @@ -255,6 +336,21 @@ static void vfu_object_init_ctx(VfuObject *o, Error **= errp) TYPE_VFU_OBJECT, o->device); qdev_add_unplug_blocker(DEVICE(o->pci_dev), o->unplug_blocker); =20 + ret =3D vfu_realize_ctx(o->vfu_ctx); + if (ret < 0) { + error_setg(errp, "vfu: Failed to realize device %s- %s", + o->device, strerror(errno)); + goto fail; + } + + o->vfu_poll_fd =3D vfu_get_poll_fd(o->vfu_ctx); + if (o->vfu_poll_fd < 0) { + error_setg(errp, "vfu: Failed to get poll fd %s", o->device); + goto fail; + } + + qemu_set_fd_handler(o->vfu_poll_fd, vfu_object_attach_ctx, NULL, o); + return; =20 fail: @@ -289,6 +385,7 @@ static void vfu_object_init(Object *obj) qemu_add_machine_init_done_notifier(&o->machine_done); } =20 + o->vfu_poll_fd =3D -1; } =20 static void vfu_object_finalize(Object *obj) @@ -302,6 +399,11 @@ static void vfu_object_finalize(Object *obj) =20 o->socket =3D NULL; =20 + if (o->vfu_poll_fd !=3D -1) { + qemu_set_fd_handler(o->vfu_poll_fd, NULL, NULL, NULL); + o->vfu_poll_fd =3D -1; + } + if (o->vfu_ctx) { vfu_destroy_ctx(o->vfu_ctx); o->vfu_ctx =3D NULL; --=20 2.20.1 From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653406686; cv=pass; d=zohomail.com; s=zohoarc; b=MslSB7x+aOwfvYNWoWkr66RsovqJ0DRK40w9ROCVICuPd8ckF/8D7fQFhePiwR3cHGLU5Xi2BKwh4fkVSnU0MLJQShZ0a9fUO+icv05wQlOJdVWY/KobwqJymmGavHkC1mAEVdaQ9zY+i538USI13YH5K1vPX43029e3cEQ76P4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653406686; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=uqM4fo1oaHQDQh56XS1RRp5KeUjXcP5uwdV6i5UnzOg=; b=XPapmeakWtV4R2DhHHCieEOs33b0H1aZ8c8qG0gy/G/8RdZjm3JEleqe+O4Y0KTmptOha18qtNiz3XuKb/HEA07emp3bE1bTQRgvmYkUcW/XWRDuZyws+J5Ym5In1yY1LGPny5WZg4OvQ6uRHRAUqmKuuuyrmA5I7Y4x2KN3ggc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1653406686567507.0891068901294; Tue, 24 May 2022 08:38:06 -0700 (PDT) Received: from localhost ([::1]:34354 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntWbl-00078S-6h for importer2@patchew.org; Tue, 24 May 2022 11:38:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39898) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWVB-0008Co-1p for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:17 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:28892) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWV8-0003RE-VX for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:16 -0400 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFKeGQ018506; Tue, 24 May 2022 15:31:11 GMT Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6qps6tjn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:11 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFSSVx020986; Tue, 24 May 2022 15:31:10 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam08lp2043.outbound.protection.outlook.com [104.47.74.43]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3g6ph2rj84-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:10 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:31:08 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:31:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=uqM4fo1oaHQDQh56XS1RRp5KeUjXcP5uwdV6i5UnzOg=; b=THWEF9av5xELBCWGeg8f6GlWyiRnhzDuyKfrvx8mQ0iGcY6hkYq5Ok4WO1BxNWMiPsp/ S/36hzJATyefCU6teBUb0Pqew6/boi+W/YeKaslVbLc8ORD829AoASVfIyJPlENyuniG CSrYOlpbgp0nCh8QDaNiavrnX1MVcHr/orI4w2paG8/K0ulY/zZlopfdZtIxl4qknkV9 86pXNMCOgcb96ASiFcY7QBWWM952m10ue/3YTUSJSEGKwfmcLM4dOjZGknyD6nAlX2np hcDuGQjoLxST3qlI8ZRAsd+9hSbQd0N8Xdt8YAF1/nMyOdBk+eywIPtrtbhPdilUyosR hA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OdWzG355mhzHgfv0ZfGNQQqpIT/GKLOFSb5lg2sWwll31rm31mTriuT8rAj9ovWYbPFwm2/zrtmeZKR+nJzWxys9oHvZY8fFUJoH81YUJBhH/bEhjw5HJnYF6xPDHAa3A2sPDYLYrYSitFFnCe9zGoWL9+rcXtLKhglH6mjSQrks1b1AQcGLzqyr8KtgX8JNXsIiq/EX50OrreVP/xmUQS+8BxTlNV3vnhCDffv44Pq3t2FkRKG9oPWVSGRHtyYHefNrSGS2VIAqJDWySds7nDsMSIovSVsTgc5rhYpxKbPgo8lpL270Omizuw9dQdEk/UukzY3McWEehE+RjvZdYw== 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=uqM4fo1oaHQDQh56XS1RRp5KeUjXcP5uwdV6i5UnzOg=; b=RlLvucuTw1bNOronYTy8uc89lYMIv2TScTx5XUBBq2zNL20tWkpbWZsoVlz3YVsfbA+U4z5kFbttrOPNMboV/I3Yhq06c4j3SIzyrXLL4MnNkTH4g3LxSFyO2au6YS0Kbk8UYZjSKkSriZAiP14kfyE1JWjez2QvGclyDD7DfY7NQLDd3Gt/inItS032S4WdxhkiVmOjrJtlCK3+MLjbCAKEMEOr5SonG8BB2gmZaTRWEnHGygX/5GWJ+FnYe/NMLIcsbeBrAn9NMW/reI7y/qWglRUN+XOzF/9exgd7PmKUBEzBsMlJNBhwlQyBoPLTENHBUQR8OjpQ1Sws/o80lQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uqM4fo1oaHQDQh56XS1RRp5KeUjXcP5uwdV6i5UnzOg=; b=J7Ia1CuZLCjOJw8J0F190UC/IJB33QRSPYQnOxEb2L3O46LOIKUSqXlo8xQsyD9PwrRLPhdEZB9EBP6uYUhKgICoOURfuGQAlNe35inGSATtsFK5Lsa/Gqih0oDM+E+cFidrNW6o/eGX1Wua/Ix0jL7/Zx2lk6QFiA3jp+t2zEw= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 09/14] vfio-user: handle PCI config space accesses Date: Tue, 24 May 2022 11:30:28 -0400 Message-Id: <497de95cd7abe46350f62c748d45e691f7d64a8c.1653404595.git.jag.raman@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6f8f8567-5738-426e-2884-08da3d9a6ca0 X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: /HTupOOUwoHvGuGl6BRTbHpt7dFSe20roRhDGZMQQf+IlZYqqJYzBsOl85+H4iCyZI0LMfXNGvDWrcskylJbGdwo5QiuOF0y+0yZswauGSaiqFvapePeAJtEAGE1LcrV38N1Hva440tlFOvUMHG3PR6fi9R+l7v6FRr+ZsYI/nPoL3nk424J28J5vTCYmagV1NcG4hWgaQu/shYT3xGNpv5wWvburv0WkdTgQkG+mlD61xGvntotVqngSRltOcgY8mUZ2lSFc5YS5AbqcoB+mm7x+YuRQQ95JstSMy9KwzoksREoCJMIIohGbv8cboD/WEEkHqsbwdrYcVCyZjKWJIkWN2Xa0m30nin1hXmv7nENujGgHDAlK7LroY+zRMsiZ4IYQdCJRUMewPfbNgV6o9PY5+2vDD1Y2VZcOAh6/wuLQlky3Pcr8EWEELrZccCyV8Uq434R01Si21gmsiAih/NaQXY8c7nLXeX9EuBVQceIgg/gdm/ZfyUS/vUB57P5cyMtt4+4kpzn73DF8xaP3LUs/RE7BQtw+EoBeSfECCGOcztf/mKDE9ULifIz3kR/PLw2xdJsiArmUSmxp0x7TGsD8SOPz7VFNokToxQ2nYpNeBr9pfbTY33Kh3W7Rumb9wQCJ3YtwVqXhPERDMGx++bZw+Qjgys1bfSbb0OIKeR4UXarj9I2Pk3pAljJL7in9u6nwMfwF5CSSiFggl2UWw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(83380400001)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2Z2CKHujXs0EUIiqF0s08ih+O8oZcsKfp+bH686aWN+fi3hdjvhKk2iEQElg?= =?us-ascii?Q?oc0ycc0yO4obAd+sTlAFHFohduCx4fhbKXRdvetnqdOrA2wR4jrIhDYURgur?= =?us-ascii?Q?8yyDDOneBGR8X/dwiAYJ9N63til+iif0O/4G+HV86/fFtjslUZukVEAItORH?= =?us-ascii?Q?5t+/SY88w9k99psl8+OxEkhQeHovDNNaYAnx4CSlBg6Mvn9htvUH8FHqpnwY?= =?us-ascii?Q?1Pm8+uUuEHTS/RXpK6Pef3fFcxdL/KOOWXP4EMZ+0IJE2Nk6vJ67j0SHKfXd?= =?us-ascii?Q?pMwqDdwq376rf5dZD/oJhkyXOOcXhEx591SVXSPhm3YoaFQHICfBDMyHgpd4?= =?us-ascii?Q?XuodBvSMX5L1asILd4mLZXeeO/pKOlGpi404WlRGw2IAK8PvdnuUPuckl+xm?= =?us-ascii?Q?idonrSsd40XhnPc8eyCtFT8t0jTAZafClyt4oh09ebCV+4TSgxd6Juu1BB0C?= =?us-ascii?Q?2daCYngBRdzwIhsaUQbyURyYWi41AWHHMn/yz20VdQhM2zEeQoelbJfZML6W?= =?us-ascii?Q?1l8NFAn40YEEZPBAcSeV49w6e1WmGNxCB3t+8ENpP0XffJUev2nowCZ/4Bq2?= =?us-ascii?Q?xrdFma2cLEPOn+NCHG7R/q9ThPgLBc2ChIxPYc3QznEdHsR1LQhkeoVUvB2z?= =?us-ascii?Q?sqRtxDDD9qojzhjcdbGU2NyN5oi+WHQDFNzic54HqXSAhJDcWbPhFkzxz4Yg?= =?us-ascii?Q?7/hB0Hy0Qw132y/unbunqkWKIbpZao/hmoH5Wui41s8aD57Al1/ehIseGwyh?= =?us-ascii?Q?8+8cQyPtwfogsXujqhE/AeN+tB6Wu1gt+oPqRoUyHc9skx8BS4H+9IfFJ3PQ?= =?us-ascii?Q?H/7MoB5AbX+e4MpLoIFZl+HW0bIbAdM50Ngdze2RiEGhtfg4CdHwT80+FfsF?= =?us-ascii?Q?m6DjKwKZHMgWIY9xDU9rgha1eK0zPRINIVkAcS3ku+5KJR9bxceXWSfwHHq5?= =?us-ascii?Q?jbCxwjpLWYGkG9wkZv2fQ/SXudVN42atDvRTHvFGh/AR+UJe35eBJkaHo2VI?= =?us-ascii?Q?KClJc/PGHXfqZpp1nJKk6YmJuPBh3nT24CUbf6/BMdAh6Xo5ZV+voYnR4h0d?= =?us-ascii?Q?bMcpSAqFkl6mHXXhIoWD3ED6g7C+cejBZvUDOiC7xapSoTUuialvYpO8BMai?= =?us-ascii?Q?OHPnae4IqxjykqrNsbDf5QWnTSo3kEU8HaTDeZ7+lqKHKAuZ8DHtc2EvDqtM?= =?us-ascii?Q?tvHofd3FbKChSDAp/YHwrI8Ni5s/rluI2mBx03ITXoNfEfnSU4WNIDDbtRQw?= =?us-ascii?Q?i3K3M3z3ltM0ut1oaJm9mDyvAcWMtsioQUWTFD6Zu2K5LC08ZskC/wSY5s5I?= =?us-ascii?Q?dEbyaFKtN90y1sX6bFIIBk6dbCWMYZCzErUzYLDqq1AOAryH12dpRONIJEw4?= =?us-ascii?Q?/55JwcXiiIcbAumaHOIcyExnV5sKEbbBSCBHVXOpb8YU0mEc8gLZ7yEhJTDc?= =?us-ascii?Q?LLGGNOjB5lCT7B7LL71T0MHNQ1v1JYPv0JliLbAVpn++cCn260YCPaESiLQW?= =?us-ascii?Q?Eb6z++LPgbaSGUewLJ39hQKFJMyOggQOLfw6cU3e9n2ywF9BYj363iWwMhTo?= =?us-ascii?Q?6gRSP3KZq44jf3Anhf6lV+genlwsdUFpwkUKH/IcvDDRpaqZkaOeXfNteSlb?= =?us-ascii?Q?g4C9ovXkklDnR4qaoKILK9DhmCV8Bvtvzil4V38E0j3nOSspydKE2Ze/dgjR?= =?us-ascii?Q?NTTKnBRiVWWDldbIbXCxje1ZrmYaAN/CjEsTel8vrcJB8KYm4nw7wG+V7aNe?= =?us-ascii?Q?2mkutsSYxg=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6f8f8567-5738-426e-2884-08da3d9a6ca0 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:31:08.5852 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: cT3VfRrPM2fE2LaCAej4gfcSU8ZDI4/jH6/hDwlW1iiu0uaF9Y7cBcN2Lh5a/8BNvul8Jjya+GJErq+76EyA3A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 mlxscore=0 phishscore=0 mlxlogscore=999 adultscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-ORIG-GUID: nPAuumOLT1cCLY8XOTN2CiUv6kvhEx80 X-Proofpoint-GUID: nPAuumOLT1cCLY8XOTN2CiUv6kvhEx80 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.177.32; envelope-from=jag.raman@oracle.com; helo=mx0b-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653406688367100001 Content-Type: text/plain; charset="utf-8" Define and register handlers for PCI config space accesses Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- hw/remote/vfio-user-obj.c | 51 +++++++++++++++++++++++++++++++++++++++ hw/remote/trace-events | 2 ++ 2 files changed, 53 insertions(+) diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c index fb5c46331c..575bd47397 100644 --- a/hw/remote/vfio-user-obj.c +++ b/hw/remote/vfio-user-obj.c @@ -46,6 +46,7 @@ #include "qapi/qapi-events-misc.h" #include "qemu/notify.h" #include "qemu/thread.h" +#include "qemu/main-loop.h" #include "sysemu/sysemu.h" #include "libvfio-user.h" #include "hw/qdev-core.h" @@ -244,6 +245,45 @@ retry_attach: qemu_set_fd_handler(o->vfu_poll_fd, vfu_object_ctx_run, NULL, o); } =20 +static ssize_t vfu_object_cfg_access(vfu_ctx_t *vfu_ctx, char * const buf, + size_t count, loff_t offset, + const bool is_write) +{ + VfuObject *o =3D vfu_get_private(vfu_ctx); + uint32_t pci_access_width =3D sizeof(uint32_t); + size_t bytes =3D count; + uint32_t val =3D 0; + char *ptr =3D buf; + int len; + + /* + * Writes to the BAR registers would trigger an update to the + * global Memory and IO AddressSpaces. But the remote device + * never uses the global AddressSpaces, therefore overlapping + * memory regions are not a problem + */ + while (bytes > 0) { + len =3D (bytes > pci_access_width) ? pci_access_width : bytes; + if (is_write) { + memcpy(&val, ptr, len); + pci_host_config_write_common(o->pci_dev, offset, + pci_config_size(o->pci_dev), + val, len); + trace_vfu_cfg_write(offset, val); + } else { + val =3D pci_host_config_read_common(o->pci_dev, offset, + pci_config_size(o->pci_dev),= len); + memcpy(ptr, &val, len); + trace_vfu_cfg_read(offset, val); + } + offset +=3D len; + ptr +=3D len; + bytes -=3D len; + } + + return count; +} + /* * TYPE_VFU_OBJECT depends on the availability of the 'socket' and 'device' * properties. It also depends on devices instantiated in QEMU. These @@ -336,6 +376,17 @@ static void vfu_object_init_ctx(VfuObject *o, Error **= errp) TYPE_VFU_OBJECT, o->device); qdev_add_unplug_blocker(DEVICE(o->pci_dev), o->unplug_blocker); =20 + ret =3D vfu_setup_region(o->vfu_ctx, VFU_PCI_DEV_CFG_REGION_IDX, + pci_config_size(o->pci_dev), &vfu_object_cfg_ac= cess, + VFU_REGION_FLAG_RW | VFU_REGION_FLAG_ALWAYS_CB, + NULL, 0, -1, 0); + if (ret < 0) { + error_setg(errp, + "vfu: Failed to setup config space handlers for %s- %s", + o->device, strerror(errno)); + goto fail; + } + ret =3D vfu_realize_ctx(o->vfu_ctx); if (ret < 0) { error_setg(errp, "vfu: Failed to realize device %s- %s", diff --git a/hw/remote/trace-events b/hw/remote/trace-events index 7da12f0d96..2ef7884346 100644 --- a/hw/remote/trace-events +++ b/hw/remote/trace-events @@ -5,3 +5,5 @@ mpqemu_recv_io_error(int cmd, int size, int nfds) "failed t= o receive %d size %d, =20 # vfio-user-obj.c vfu_prop(const char *prop, const char *val) "vfu: setting %s as %s" +vfu_cfg_read(uint32_t offset, uint32_t val) "vfu: cfg: 0x%u -> 0x%x" +vfu_cfg_write(uint32_t offset, uint32_t val) "vfu: cfg: 0x%u <- 0x%x" --=20 2.20.1 From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653408569; cv=pass; d=zohomail.com; s=zohoarc; b=THRHoHVcHgAAPCLxuEady8RF1jesJ8YRqkmuq+Ia99WxyrLEYn2gYQ8GoD8U6Yy3ttcRM4wgqIGhYlqJXxpCVC4Ughy414F8pWGIiGI7hmHcihvNNwZC//2C9egcfyLccu1QMSLKf4P9kmlf8xbAHvETyI+AqAU2eu1L75AAK6c= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653408569; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=B51K62cS6ZkPHiXp68MWw29OqPcqZq+rplOVlnmUwks=; b=h2nZUM7TgIJLpB0X96iIP0Ia0ybG4enr0qu7w0s+2bC5wW+GUG/sVnXoD35ZIpue9tiDF7alYg5kvwmFkrXf4/iElBpXpYGsWosMtB0UsSMUxMSpzLq+a87v5gQ8Qeo5IMEn4nZu2Um8Hg1mV5x4vn4HUKYsQ1wEh8/4JY4wh2I= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1653408569093849.4834178621621; Tue, 24 May 2022 09:09:29 -0700 (PDT) Received: from localhost ([::1]:58376 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntX67-0003Db-Qz for importer2@patchew.org; Tue, 24 May 2022 12:09:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39918) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWVF-0008FN-5n for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:22 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:43264) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWVC-0003UK-Vq for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:20 -0400 Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFPMQb001520; Tue, 24 May 2022 15:31:16 GMT Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6pgbpqa4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:14 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFFrjN015045; Tue, 24 May 2022 15:31:14 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam08lp2047.outbound.protection.outlook.com [104.47.74.47]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3g6ph8x15x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:13 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:31:11 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:31:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : content-transfer-encoding : mime-version; s=corp-2021-07-09; bh=B51K62cS6ZkPHiXp68MWw29OqPcqZq+rplOVlnmUwks=; b=0GkEne4Csis9M8YWqCnCUkle9wV84pyqcz9Gl0Y6K0lFer3ubwIAqTaVUsgvRmrCR+Js WaIemlmZCrpqSmXNmgi1Xk38Rnz5fdobhuU1sn1x/juM0UnuKwrwHPNzPYMfQCXqj8pz S3gi1vneAo2XDqJHSj4b4JW8eMRYEwfJehfjdEJtYxevgHm5NfCQbRRqPNE1JHmA93yn YFasWKGnohYFxC8tyEQ1ibuusYJ2La0Unc8goGVFuwPTxpqNkuTIN8eex+QrctXP9/wG 7X+DVLqZT/6A5sEQy91/4GwRk/pf9DB7iNEW9uanwqKzTpf4gzatwtBNvFfKCKpIoH4v eQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VfGuVmWrNiE/mQtQBrS6NduVIXltEx3QAdsyGd50XC7rze+wMj8iSOYZjIbKXa7BqYv83gDoxcEHIP/RFhnw03Sku+M5/A2B36gpBmZd+T/ItR1WH/Ry8Ry7QbdTjYzYcgdZktIwAhlQjzYudjNah0CksVnOrRV/7I95PMy7eYsoJaCsYNPGWztBK7zN6P8FgmKU0nYIIBfwjcu7ckWjGEBvzJmKZmLqMh1FtABKwv9iF9xzfaXoBQxV/+pfMBNSZ66C1mdDaP98pevBsY7Vtk8mSXrl4hRmvS0asOH0Nu6AHVwd+I+m36ocuhFnM5xzG15Qv1yO9FjjcnBif1qDcA== 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=B51K62cS6ZkPHiXp68MWw29OqPcqZq+rplOVlnmUwks=; b=ZS7iEFwLEgNzdh2ZXFaJ4APxFnzbAfd5ZvW/t4ejoNBFWlR49KsMPJfrAHaioc8z505xb0ac/qgQQ5g6QOFWKOrKMup2WvSCAF1gURHdZJpObpZLpohs+Rh70AlIHzghvruMguo7mJujLAwbYK6oNRz0xIj7ygcliBPXFsevvBK4oXNYON3nCWip0lmIzyLU9ohege3VQLySGhU6R++3bZfKR4ywFQUHp5mRhwXdJW+CSDFxcTomk28hK4jaPex6LZ/zO1wyvS0tC5zGcT83gSBw82tZrqQwZUYzbXZ/NSBhnYUSdw0mlqVToF5sgbUQF3jCOxAduvdoawaeLG6a+w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=B51K62cS6ZkPHiXp68MWw29OqPcqZq+rplOVlnmUwks=; b=O6QxL8gyAmQKErZ8wMCslfmGBaYxDo3cyWLIWGocQe6WMe9KGxThdpu25eThdxQzQHi5xwGFwKkRV6OQiulKoguBRFCU9bsYdRoyU7PCbfqsFgZFZdqT/f9eQbiFZiIxPQYhms37GkwBvI8hHJBh4KBDUmW/ZrACfdOBnFR0hM4= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 10/14] vfio-user: IOMMU support for remote device Date: Tue, 24 May 2022 11:30:29 -0400 Message-Id: <94611f75e1b7bda8a85b2cbb2b81f976c2d2e338.1653404595.git.jag.raman@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e1901279-1c3c-441a-cf2a-08da3d9a6e75 X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: XXLa9iDURxKeQtjh5p5XhOearzL1M7Md8z8yqeILuXX4ZSxPgXJl0z5aC6llnZgM0iIoDwDsUzhSsqb4v5IrozpiQmh03HPq6PHxBS0uDRbXnmM7DaJ8fh213c14nqoi9SJWKyvzYjrHvsmXBzIYAfEOOOSC/KO14EjBtqqKZY7KV5o+595D0cj/ovQx4zVEMLOh8kDDw3ssapwLO05bQT2y7t+1I+Vq34GvCMYWiuBenN27NNDw1o/s+Huyb1xV9GU8TvnvFTzjshK5gIq8Ko9JIhmEB0CwMnWAaJQG4u3i9tDEKqERc3pGdEJrIH8p3+kI1n8UrWObD/PPUes5VsGkDC9NCKgk5KYUocPBw+mCcB7Xj6gCrwLJmaCWz62v+4l0u2SAyFBOKpVc/H+TAWoLuiiI7YsXjN1j1/sJovOISHn8DM+5WXBdTxkPrqVGYQJUFq3tE4BeMkfBKzaKsGdrrxeNI3yldk3wwUWSPL8Roi+c/OisAgpbzXyfrlJ7wJuvRKMk5dmmtc7ieDSJ15ti3PGUnm5Gpj9r54RJjWX1PeABDg+4vFbfukDphkPR9dR18+Jc4hqe+jqYJll+A83WYg30DeEfLlwnwMd9Ge3AIuwVfweYDBqH73fk89gV7TZsYVKPuaR9fDTPitGWm6HGZ9A8t7Psaoi5g+lhvYb4wAxT1S3FcyDcooIa/AGIeb0uBpvAEb0d1/9m5+mEeA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(83380400001)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UW8yWGd3MUhhZEFiejVzUG5ya09Cd0x0WTQwR3VzZmd6UGpJeVg3dWRjN3A0?= =?utf-8?B?Q3YyeUVZeWVLNkxwK0hyOThHU251ZXlLUjdPTkpINXhPNnFhNjdEbis0d2RF?= =?utf-8?B?Qkd5WjZ1MWdYQk5yY01JbjMyMzc5dDFhc2gxN0srUm43Zm92c3VQdnd5UmFN?= =?utf-8?B?YmJpemtWQWUwZHNNOUlOeGVGK0x3Q2E4bXc0eWNvbTJ1NG9ob3Z5VUxCWTFQ?= =?utf-8?B?eHFNeEVVSVp6Si9wcDRqVUxTMzhmVEUwVWZ6S09pWXRBbzR5RHFDSXAvYlNj?= =?utf-8?B?NDcyR1pUSDdnMEpicUtkMUsrOW9FbU1XLy9rQWd5ZWMybmVxQktLSFkwcWhK?= =?utf-8?B?SGFWWTFyYnh5MzJyYkViTk9lYkJqMTg5c2dYelBBRWg3b09CdFFoZkZvZ004?= =?utf-8?B?d0NZeGlCcTFJdGN0K2ZWRnVlOWpPNUNiZHJNejBUelFURlg5VmFBRTRERS9K?= =?utf-8?B?SldjQjV0OG95SXVQQ0t2Wk5WbW9IalVpZU5GSDhHK3N2c0ZXN0pxVHNpME9V?= =?utf-8?B?NmVTcHNZN1NuYmcwbG45RVY0ME1TNWhIZHdramtIMVZDMHcycVIyYUovN1ps?= =?utf-8?B?dC9UL2J6WVkwMTVMSDBWbXlLYWVBNlV2SjFoWGFrcXpUS2doa0VkN0dsQThy?= =?utf-8?B?ckdzRW8zTzF2aVYwNGRZM25ZcnpabFRTVms3QTlPVzFWckI3WW5SZk5PcmRM?= =?utf-8?B?ZG14S3FCalRUVHViMmJUdDZkQ0VYcEtsN1FjMEJvc3UvbEhHcG5ETGlNVGVw?= =?utf-8?B?OWJldldrWlUxd3QrSUNaS2oxMDMrVkRzclJxOFV5cGR6K2NsUm1Nb0pGTjdi?= =?utf-8?B?dmJTMEhFeE1RSDhOZkJiSEV2YXZHdXpkVlZOM0tnUll0QkxWNG5ad0NzK0s0?= =?utf-8?B?VENqd2VIOWhnZnVoZUE2QnpoL242WitBanFLYUFqVCtUYnNpOHMzdEg5NjMr?= =?utf-8?B?bkNBUFZYR0t5d2dGQi9CekUvQU9XVmpKaHlXZVAra1hLTVNrM2VXc09GUWg0?= =?utf-8?B?NXFSQzNLeTBudE80eU1WNTFFZm4zd2JYU2dzMzV6amlUSDhETVZrV0xyTE85?= =?utf-8?B?TGJ1UVNFUFVvY2RBMitLZUhIejRQSDVRaUpUYmZKelFWTUpxZTFSN2ErVUNN?= =?utf-8?B?MEJCcFlFWkNVbnZQdFlvY09uU2VOZmNJTGNveHMya2h6cnRGc0JjeWwyazda?= =?utf-8?B?WlZoQzhhK3VXZ3pCaGpaR2t4N0VEZ3cyTm9OYzFuSkYxaDVmK2tTVS90ZDl2?= =?utf-8?B?TjR5Uk1nNCtYTExSY1ZmaGdVL1AvdkYxWTVaTkNpcjJBMEdYUHo5WS80aHRL?= =?utf-8?B?elBweFRjY0ROTEZSLzRFQjZVV2tPUXdMcCsrT1I1RlNFdklPU1BoSUpEZmRU?= =?utf-8?B?a2xqMDZwdStpaVJKZkVPUW4yMHk4ZE1rRURIZklsQy9XU2NmU3pzZG9UVnh0?= =?utf-8?B?Nmt5R0hWakFPSFNlNXpXZUI2SjhjOVZvdW5OV3hVZWRERW9oaVdvcUZyR3NT?= =?utf-8?B?SGtxTjliZHNINkJOTUlTNDhadCtJbUxCQ0xQRGhvS2JvNE51eUxwWEhkYWU1?= =?utf-8?B?TUZZcDVKaFNjVmhsVUg4d3FzclJrZUdzQk9SVkxQNlg4QzU4NG95cFZESzVL?= =?utf-8?B?cG54QTB5YnM2UmpVUlBiUkgvOGl0Q2QxY1FuNFMyaFJaSHdGbmxVOHVMTTlv?= =?utf-8?B?LytCTnhVdE5BQkFtOWI1YkF5NEdta2Rycit2Nnk2UmhTS1RpVHZPWjEwSU96?= =?utf-8?B?anVnTTdwd2J2NEFHNkNFbnpYeFVjeFRKYlJ4SWdxSUFVZDVmSWl3MS9HZXdz?= =?utf-8?B?VmFiMHgzWlk2Vmg4NU5DOEkwb01TSVJyWml3TmZQSGk2RnMvVkRqalNPYzVl?= =?utf-8?B?aVNTNCtrSmEzcFNQcVBPaGV0dXVUT2hFeXBHelFTUjlDTllrMHhxYU45T3g5?= =?utf-8?B?Mk00Wk1hNjljWUxoVGdSR01YQytpemN0Wjk2ZDB6TTQ1bndBdE5JN3YrMmdt?= =?utf-8?B?a3dEcDNSMXh1SUtrbVY5dTJwRkppNDlIU21kQWg3M3NaWEpvaXEwamcvWWg2?= =?utf-8?B?SjVtYWs2L3F2NGxJdU81RWtlN0ZzbFpsMXAvY3hiWG4wSzdibHY1RTVEMTVZ?= =?utf-8?B?M3VmZVlHWCtCbnFYNzBsSUl5dFlDY2ZRdW5icWxKdFM4N2ZGcnlxbG1YY09z?= =?utf-8?B?YUtBV1EyWUV6eWdQKzAxV0JFSFJUdGZMN0x5Nm9QN093eDI4UG5kZjR5RW1X?= =?utf-8?B?aWJiUjcrY0N1ZVMreFRYWnJGMGZuaTBZeldIV09rZVBSYTVudGlHL3FkbW1k?= =?utf-8?B?ejRYR1cwUyt5SGxEbFZ0V0VlMk1ZYklLb0s1dzRMTG51NTBiaFEzUT09?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e1901279-1c3c-441a-cf2a-08da3d9a6e75 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:31:11.6787 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: G7kTMmZM3VcXD1KdmogID+krkzitz/DoUZv4hozo5gESTSvU5/Bmg8nzv6NiBldEvo8TPRMK9dtzcjy5vmCMIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 bulkscore=0 malwarescore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-ORIG-GUID: 5HBA81X-xCiw6vzHp-rgVqApoLSgbUjr X-Proofpoint-GUID: 5HBA81X-xCiw6vzHp-rgVqApoLSgbUjr Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.177.32; envelope-from=jag.raman@oracle.com; helo=mx0b-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653408570344100001 Assign separate address space for each device in the remote processes. Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- include/hw/remote/iommu.h | 40 ++++++++++++ hw/remote/iommu.c | 131 ++++++++++++++++++++++++++++++++++++++ hw/remote/machine.c | 13 +++- MAINTAINERS | 2 + hw/remote/meson.build | 1 + 5 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 include/hw/remote/iommu.h create mode 100644 hw/remote/iommu.c diff --git a/include/hw/remote/iommu.h b/include/hw/remote/iommu.h new file mode 100644 index 0000000000..33b68a8f4b --- /dev/null +++ b/include/hw/remote/iommu.h @@ -0,0 +1,40 @@ +/** + * Copyright =C2=A9 2022 Oracle and/or its affiliates. + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + * + */ + +#ifndef REMOTE_IOMMU_H +#define REMOTE_IOMMU_H + +#include "hw/pci/pci_bus.h" +#include "hw/pci/pci.h" + +#ifndef INT2VOIDP +#define INT2VOIDP(i) (void *)(uintptr_t)(i) +#endif + +typedef struct RemoteIommuElem { + MemoryRegion *mr; + + AddressSpace as; +} RemoteIommuElem; + +#define TYPE_REMOTE_IOMMU "x-remote-iommu" +OBJECT_DECLARE_SIMPLE_TYPE(RemoteIommu, REMOTE_IOMMU) + +struct RemoteIommu { + Object parent; + + GHashTable *elem_by_devfn; + + QemuMutex lock; +}; + +void remote_iommu_setup(PCIBus *pci_bus); + +void remote_iommu_unplug_dev(PCIDevice *pci_dev); + +#endif diff --git a/hw/remote/iommu.c b/hw/remote/iommu.c new file mode 100644 index 0000000000..fd723d91f3 --- /dev/null +++ b/hw/remote/iommu.c @@ -0,0 +1,131 @@ +/** + * IOMMU for remote device + * + * Copyright =C2=A9 2022 Oracle and/or its affiliates. + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + * + */ + +#include "qemu/osdep.h" + +#include "hw/remote/iommu.h" +#include "hw/pci/pci_bus.h" +#include "hw/pci/pci.h" +#include "exec/memory.h" +#include "exec/address-spaces.h" +#include "trace.h" + +/** + * IOMMU for TYPE_REMOTE_MACHINE - manages DMA address space isolation + * for remote machine. It is used by TYPE_VFIO_USER_SERVER. + * + * - Each TYPE_VFIO_USER_SERVER instance handles one PCIDevice on a PCIBus. + * There is one RemoteIommu per PCIBus, so the RemoteIommu tracks multip= le + * PCIDevices by maintaining a ->elem_by_devfn mapping. + * + * - memory_region_init_iommu() is not used because vfio-user MemoryRegions + * will be added to the elem->mr container instead. This is more natural + * than implementing the IOMMUMemoryRegionClass APIs since vfio-user + * provides something that is close to a full-fledged MemoryRegion and + * not like an IOMMU mapping. + * + * - When a device is hot unplugged, the elem->mr reference is dropped so + * all vfio-user MemoryRegions associated with this vfio-user server are + * destroyed. + */ + +static AddressSpace *remote_iommu_find_add_as(PCIBus *pci_bus, + void *opaque, int devfn) +{ + RemoteIommu *iommu =3D opaque; + RemoteIommuElem *elem =3D NULL; + + qemu_mutex_lock(&iommu->lock); + + elem =3D g_hash_table_lookup(iommu->elem_by_devfn, INT2VOIDP(devfn)); + + if (!elem) { + elem =3D g_malloc0(sizeof(RemoteIommuElem)); + g_hash_table_insert(iommu->elem_by_devfn, INT2VOIDP(devfn), elem); + } + + if (!elem->mr) { + elem->mr =3D MEMORY_REGION(object_new(TYPE_MEMORY_REGION)); + memory_region_set_size(elem->mr, UINT64_MAX); + address_space_init(&elem->as, elem->mr, NULL); + } + + qemu_mutex_unlock(&iommu->lock); + + return &elem->as; +} + +void remote_iommu_unplug_dev(PCIDevice *pci_dev) +{ + AddressSpace *as =3D pci_device_iommu_address_space(pci_dev); + RemoteIommuElem *elem =3D NULL; + + if (as =3D=3D &address_space_memory) { + return; + } + + elem =3D container_of(as, RemoteIommuElem, as); + + address_space_destroy(&elem->as); + + object_unref(elem->mr); + + elem->mr =3D NULL; +} + +static void remote_iommu_init(Object *obj) +{ + RemoteIommu *iommu =3D REMOTE_IOMMU(obj); + + iommu->elem_by_devfn =3D g_hash_table_new_full(NULL, NULL, NULL, g_fre= e); + + qemu_mutex_init(&iommu->lock); +} + +static void remote_iommu_finalize(Object *obj) +{ + RemoteIommu *iommu =3D REMOTE_IOMMU(obj); + + qemu_mutex_destroy(&iommu->lock); + + g_hash_table_destroy(iommu->elem_by_devfn); + + iommu->elem_by_devfn =3D NULL; +} + +void remote_iommu_setup(PCIBus *pci_bus) +{ + RemoteIommu *iommu =3D NULL; + + g_assert(pci_bus); + + iommu =3D REMOTE_IOMMU(object_new(TYPE_REMOTE_IOMMU)); + + pci_setup_iommu(pci_bus, remote_iommu_find_add_as, iommu); + + object_property_add_child(OBJECT(pci_bus), "remote-iommu", OBJECT(iomm= u)); + + object_unref(OBJECT(iommu)); +} + +static const TypeInfo remote_iommu_info =3D { + .name =3D TYPE_REMOTE_IOMMU, + .parent =3D TYPE_OBJECT, + .instance_size =3D sizeof(RemoteIommu), + .instance_init =3D remote_iommu_init, + .instance_finalize =3D remote_iommu_finalize, +}; + +static void remote_iommu_register_types(void) +{ + type_register_static(&remote_iommu_info); +} + +type_init(remote_iommu_register_types) diff --git a/hw/remote/machine.c b/hw/remote/machine.c index 4d008ed721..cbb2add291 100644 --- a/hw/remote/machine.c +++ b/hw/remote/machine.c @@ -20,6 +20,7 @@ #include "qapi/error.h" #include "hw/pci/pci_host.h" #include "hw/remote/iohub.h" +#include "hw/remote/iommu.h" #include "hw/qdev-core.h" =20 static void remote_machine_init(MachineState *machine) @@ -99,6 +100,16 @@ static void remote_machine_instance_init(Object *obj) s->auto_shutdown =3D true; } =20 +static void remote_machine_dev_unplug_cb(HotplugHandler *hotplug_dev, + DeviceState *dev, Error **errp) +{ + qdev_unrealize(dev); + + if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) { + remote_iommu_unplug_dev(PCI_DEVICE(dev)); + } +} + static void remote_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc =3D MACHINE_CLASS(oc); @@ -107,7 +118,7 @@ static void remote_machine_class_init(ObjectClass *oc, = void *data) mc->init =3D remote_machine_init; mc->desc =3D "Experimental remote machine"; =20 - hc->unplug =3D qdev_simple_device_unplug_cb; + hc->unplug =3D remote_machine_dev_unplug_cb; =20 object_class_property_add_bool(oc, "vfio-user", remote_machine_get_vfio_user, diff --git a/MAINTAINERS b/MAINTAINERS index 8121671228..9d8695b68d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3604,6 +3604,8 @@ F: hw/remote/iohub.c F: include/hw/remote/iohub.h F: subprojects/libvfio-user F: hw/remote/vfio-user-obj.c +F: hw/remote/iommu.c +F: include/hw/remote/iommu.h =20 EBPF: M: Jason Wang diff --git a/hw/remote/meson.build b/hw/remote/meson.build index 0eb5a0f375..ab25c04906 100644 --- a/hw/remote/meson.build +++ b/hw/remote/meson.build @@ -6,6 +6,7 @@ remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('= message.c')) remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('remote-obj.c')) remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('proxy.c')) remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('iohub.c')) +remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('iommu.c')) remote_ss.add(when: 'CONFIG_VFIO_USER_SERVER', if_true: files('vfio-user-o= bj.c')) =20 remote_ss.add(when: 'CONFIG_VFIO_USER_SERVER', if_true: libvfio_user_dep) --=20 2.20.1 From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653406692; cv=pass; d=zohomail.com; s=zohoarc; b=j+b0Nx2t7gCS5q/u7DXuNIe89VMC+IZAQQSpbnwwnBpFsDKYBauGjANvgEmvh11gxnbPCVBT4KIcYpaJIwliGGjedB7RpITRC1dwtazuxwViXNcapu8+ILFIBzZrmxlJ/Kp9sorCCToYxqFRC+PZ6aojMLI7CZVVTktN8mJw8G0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653406692; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=uS3rE0whJxtQmZ5hawMvWyrClqljIpiOyCbvhsJlICI=; b=KBkrtVIY1XHKSDvU612BQDh1PXUWIel2b6TybEHc7Db6tRS+DQXBikHi2PLjLg5JTOGpf+wQAh1ohj2ahPJaJzE6H6iQRMocSvvxaMEhOXkFTamwNxeNqPYGo0zyu6lc8MD3koHz/8H8KW5Khh6MHAIf81efOfKU9J5YzLDbL0I= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 165340669245542.070365780988254; Tue, 24 May 2022 08:38:12 -0700 (PDT) Received: from localhost ([::1]:34694 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntWbr-0007Mk-CO for importer2@patchew.org; Tue, 24 May 2022 11:38:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39958) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWVK-0008Ht-I1 for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:30 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:49102) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWVF-0003VP-0z for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:26 -0400 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFHS5S018477; Tue, 24 May 2022 15:31:18 GMT Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6qps6tk2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:18 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFGJLX040315; Tue, 24 May 2022 15:31:17 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam08lp2049.outbound.protection.outlook.com [104.47.74.49]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3g6ph2h2n8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:17 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:31:14 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:31:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=uS3rE0whJxtQmZ5hawMvWyrClqljIpiOyCbvhsJlICI=; b=yDP4jJVgd+RXUREsisxhkCex8tljbmSJJN+i7J6Tgs2oYsHi9/xcgfdvh8ZXgB415CMG 8ElxXQkOJkokhRvuh/tQetuVcNHQeFEXM29kwUBfrjoc2aSGgiO1D4sOcQjWUF2QtlKS pp9rv/mactflH1VKF2iLP/cdwxDj/jJe9tF3eQtxasYZnwqi+4Fm+z1U4GIe7QtZ2wfQ SRTbD+DZr0WY7/0JPr6sHuZGxp1IHeEUt9EXrkp4WCGin7F6Pe2bDBzmLUzuNm/zZxfP S/tCHRwSwqrxlFFWVRuujfIZ1rBlt/KqRZ9jNfuwf9dN3BPcd0CpORajQNdADn51ZvtD 2A== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ReytFWxZ2AI8j/321As2PCLGzT8EFqNUsSyv1iq56ZRgsrJOPZmMdicPTNzA13IH2UU6FEfiDp88p2gXxFK0KtNmpiobUXZJX8avRUeGT2zU4Zd5F1NHsT98cfiG4uMeAPf+nYdPqPtdELeY+TYv5BcVntK/9Vw9hlkh4b4gNvSlUKLxKfkYw8xHUPVYWUWR2ZjPhVXsQ18+H607CW1jdeQ93U1sljoHYjmRyrMmOIVX2PLKC5VNJ6xpok51BMUGFTWVAWLNdGKz4WMgaQl76k5vpssHGPsqWc4wA98et4vqZU68MFHH6HH6nYHyI3+zouM/pabCalPaBT2W5PxZnA== 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=uS3rE0whJxtQmZ5hawMvWyrClqljIpiOyCbvhsJlICI=; b=WATcVm0pMbjqAmnqPlri0r9PsZHNZGt70ywA9UjiQplIo27g8KOVStvBcOHykTa1QIfKob4nsHxUXwK932MatscgFHJuOD3mQhLqzcJMPXjk9tGnPkd5Q1VxvtI2Zgp1P9WVquD3oWSwCxPgkqMvDSScO6OBJYFD8d5gPztUsidI6TAuSOY0Y0QRxORZFikjjdgwhvMqwKfMMmTKnkQ+fwGlRxfgP47QJh1rRdifZokJvB1XR5WT4J9pQXIr1i2jPuY63O1R3a85rxw7A2dnoYQjqY1Dh1Uzlds+zF5d+P7SXM633HXC0PUm/iuUvnvE3cMa/9bP0tr/noEHQ6a7iA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uS3rE0whJxtQmZ5hawMvWyrClqljIpiOyCbvhsJlICI=; b=GknIpqjc9WO7jYnFVc8Z4KIlTdsgFAvNQdk7CV33IcunbQqI4cchovXPmce0XgCWmSx8uUI1HN2zi9PQsizA/+3D+cVaTGbk48dnuEp4NUc0i36z6p3azrKebw9YSxphPZLzBuW6nVf7/JSzYVdjhzmGEm9TZDCxZy8LWnQ7bmE= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 11/14] vfio-user: handle DMA mappings Date: Tue, 24 May 2022 11:30:30 -0400 Message-Id: <52415ba6025ed886828cd49744ed833c121e58ff.1653404595.git.jag.raman@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 90a250a8-5ccb-47c5-52dd-08da3d9a7006 X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: CY8LcUK2/OUdLWTWtydjPK1wMGwTz64foolaMznh4fM+GTy4or5rYWd2M7q8V2xQwjNzA8x+K6hH1NGNLXInQgce5oNdewWUOSJS+LYqrSSO6qbMKsLczgTPaI0OK7H32jePylNdV/wDOEozzOzLAjkP4yI3ZCEbgY8S1X+pl+kwawEExqkaAM7cNoezXU/7e+Ovpe0ILjA/bmdtiEnzYVE/dk0VKllNz1VOfud/rwDQnzEcJ1Nz7sK9L69cjxlptO+vwNAVuxJWxwreksuhbTnBNqv9g+IDvdoYgtPKOmpGwl6hznJxGPDVsTkYrgVEQ7RGX2+23rZJaoZ9pZxvSN1O5xURwcLm1J1F/9psAz4nlFgkB1mOCZOc5eVzeZilIO6A2pHOLd4WmH5Gtz79xJwaOrmsJ/a0EyZwGfIO7Xr1OF6moNsdwjhO82IweW8LqA2Vt5K+Mr39LLImwe1C2Vuo2Z4ZC00GMVikcJCjerFEh2WZhsgxV95OF2hyvnUWQV4N50cRxgV9CfnV0UOhgnLUbj9X2OYndcLxaTPEUZ1AJe3hr8vO1PPOTJpvYK1Y0rmM3RVo1qh2VN65pd1H5tU/gVHANlIqTNRLa+Y6LKJ1KSBGWFDTJvgKBK2SUq4XZxGX7dV5b7Gbz/zMcl825y40lZQvwv85AGqMGqJDgvRPKmiBjhpXUFcswKql+TQWbA4v8r3Z6vKsx6j1YbTYFg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(83380400001)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VerpWRtS1Rea/DGKUZ8oIYA+iw9OuNCBQOjVf8FI8vhrhlf6LdHcGEzAoVwc?= =?us-ascii?Q?0DO2MEa3PAiyMZ6qwKtfHClV9HOVP5iz/U8fG85s8VRaMfjexRH6PvcQr7C6?= =?us-ascii?Q?Bh5oObEsCHylHnFn0D363NkUcNq3fiOVCvyn4VLJhm8tc6nKBLfhqwqQsJGP?= =?us-ascii?Q?45M/+OjmbzOyGYCSBqEaqnNvK6tgxxZWPSUDAm7x4RT9sjSsNsBHkw70mB7w?= =?us-ascii?Q?oyrDX9DXVgBkbarFWAAabzpEvMZ17gUsOlOdPCVIVu4omvKp+V75NJT4YTOq?= =?us-ascii?Q?QqhtFRmNba03EdNkKjuVEpCUe1Egsdwjps+046ieZ8ikqHyxpCydSLbzNMJN?= =?us-ascii?Q?Zuv4T7kGZw5dk9B7n1vOIUoYc/xzK53gO3YKKm1uogaYoHRu9aXe6WlS6a7A?= =?us-ascii?Q?HQnsNX5echTQAic0LUQLSgfbvJQtkp/mkUfKXENW3Zjx92QHyVUVoZXy8nDN?= =?us-ascii?Q?xgNtzIBwT/QNGVg8xGdsTv7W3wpR7fnar3MEMcWm+rXcyYGpMiRYaKR+i752?= =?us-ascii?Q?c/dyAW2tTYjBpxSQMpm7gOJROGpfTb53nEbvA7R9v1WcRtbSBW2qf6x9XaGs?= =?us-ascii?Q?IDrbRnYFAU3v/4q5sNSr8lTpJ5GovwL3KlNexfxBI545/aQ8U8OVA9K0255F?= =?us-ascii?Q?BfXMxRAmPFGFdAw3Akc6mhddb1t9qK07P7OCO2hOupHuLMaxangYWXcJz2Jo?= =?us-ascii?Q?5c6y45ngyZ5w271RJP7vmbXCWkTIdHmQG1UF2lw62AzWCXYJR/pRJWmYlXUH?= =?us-ascii?Q?Qm3fS+D6KFemWYOBwVSwTyAnY9Q0RW3ZWxH2ve18FctnYPL+fg5swwP3IVpn?= =?us-ascii?Q?QtxoeBawLykJzPCpBIRJl9RbOl+4QmxnPstgWP4ZFO5AWsohwJ3OjB/X3TwW?= =?us-ascii?Q?fHj381xZgzLS0VT9NsBSRvaRJWFBVeYloZUW1XS37PwRsGnrK9BxL15uu0J2?= =?us-ascii?Q?sh3/KlESMn6/4JNnfdSmBtGcdArRweRSQOBF+CnBsphDVH4mxk5qXVp2DX98?= =?us-ascii?Q?8X07yOVQ3ITYQBaASHcgM2trnSZ8zto+7KyEGyujLsfEnzxD++cuyjX4oXWC?= =?us-ascii?Q?Povo5bRVm9lm9GOaAF2w65Qhb1up8etDS+0kSYtRLj71+09cKvWjm28pvEBA?= =?us-ascii?Q?917B8KeLlumxnB8JqRtakzByN41l5xr9kq3QeANoyVq8CHCyyb0hhvaEZ6x3?= =?us-ascii?Q?spcDRH8spmEUqdiCNXGvEk690dWNRiOaYmeKDCJypM2CqZoy7j7lzv447i+1?= =?us-ascii?Q?ZGG1CqNT7t8S8/S10yeSrT2KRhaN28QzlhWNOK2c7/Pxw3q/a7vL10jM1gcx?= =?us-ascii?Q?HNHkZAliU3eUtwGXaUKOAlwxaYAbigWs6BzpxErb4wW0P+5SFRMbMZ3uaN0j?= =?us-ascii?Q?6UF8K2T7DwJzszVcFl0DtkkELlIitls+fulX98C8oNbZjCk+R5tx5XC7zqnH?= =?us-ascii?Q?bi95CCA5co6IrazFKdltt9cbVhNhuC73aRN67loxHKF/6fkg7W2JLiMvi/ut?= =?us-ascii?Q?p/vcbK3y62kZ6YSJebWkMR1YxIvc+4KZQXpKh5hQybpE+p0MbP6m5AGDKDpf?= =?us-ascii?Q?MmDasyYcTIWHIo+1v4yTK0xet2p4QMttAt5uASPAUQ1wRqcTjrDNxDbpYYTi?= =?us-ascii?Q?OSzFThdsXkJ5TiOQbNDz61nxte2pS7+xu7qPAbfnjNz4GAYSZRYkdNF/y/eT?= =?us-ascii?Q?rpvo/x8FCaBCwVu+WS9cA0zF8L2fhumijMGKeKq5IFv1q9I/+lzg1Hdg2yFF?= =?us-ascii?Q?ausv2BsM5g=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90a250a8-5ccb-47c5-52dd-08da3d9a7006 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:31:14.6629 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 58Y+BPzAVbIdxb6aGpxtIELgwtppNkVbsgZZX736ZbuUkjOaqLB4EI0Nw9Uaw3eTVUKAZY5cTkTVas/pYbJYsg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 adultscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-ORIG-GUID: NJTiss-91wzjdeqv-VqyWhZdCwFI80Pn X-Proofpoint-GUID: NJTiss-91wzjdeqv-VqyWhZdCwFI80Pn Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.177.32; envelope-from=jag.raman@oracle.com; helo=mx0b-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653406694410100001 Content-Type: text/plain; charset="utf-8" Define and register callbacks to manage the RAM regions used for device DMA Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- hw/remote/machine.c | 5 ++++ hw/remote/vfio-user-obj.c | 55 +++++++++++++++++++++++++++++++++++++++ hw/remote/trace-events | 2 ++ 3 files changed, 62 insertions(+) diff --git a/hw/remote/machine.c b/hw/remote/machine.c index cbb2add291..645b54343d 100644 --- a/hw/remote/machine.c +++ b/hw/remote/machine.c @@ -22,6 +22,7 @@ #include "hw/remote/iohub.h" #include "hw/remote/iommu.h" #include "hw/qdev-core.h" +#include "hw/remote/iommu.h" =20 static void remote_machine_init(MachineState *machine) { @@ -51,6 +52,10 @@ static void remote_machine_init(MachineState *machine) =20 pci_host =3D PCI_HOST_BRIDGE(rem_host); =20 + if (s->vfio_user) { + remote_iommu_setup(pci_host->bus); + } + remote_iohub_init(&s->iohub); =20 pci_bus_irqs(pci_host->bus, remote_iohub_set_irq, remote_iohub_map_irq, diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c index 575bd47397..8d208f1294 100644 --- a/hw/remote/vfio-user-obj.c +++ b/hw/remote/vfio-user-obj.c @@ -284,6 +284,54 @@ static ssize_t vfu_object_cfg_access(vfu_ctx_t *vfu_ct= x, char * const buf, return count; } =20 +static void dma_register(vfu_ctx_t *vfu_ctx, vfu_dma_info_t *info) +{ + VfuObject *o =3D vfu_get_private(vfu_ctx); + AddressSpace *dma_as =3D NULL; + MemoryRegion *subregion =3D NULL; + g_autofree char *name =3D NULL; + struct iovec *iov =3D &info->iova; + + if (!info->vaddr) { + return; + } + + name =3D g_strdup_printf("mem-%s-%"PRIx64"", o->device, + (uint64_t)info->vaddr); + + subregion =3D g_new0(MemoryRegion, 1); + + memory_region_init_ram_ptr(subregion, NULL, name, + iov->iov_len, info->vaddr); + + dma_as =3D pci_device_iommu_address_space(o->pci_dev); + + memory_region_add_subregion(dma_as->root, (hwaddr)iov->iov_base, subre= gion); + + trace_vfu_dma_register((uint64_t)iov->iov_base, iov->iov_len); +} + +static void dma_unregister(vfu_ctx_t *vfu_ctx, vfu_dma_info_t *info) +{ + VfuObject *o =3D vfu_get_private(vfu_ctx); + AddressSpace *dma_as =3D NULL; + MemoryRegion *mr =3D NULL; + ram_addr_t offset; + + mr =3D memory_region_from_host(info->vaddr, &offset); + if (!mr) { + return; + } + + dma_as =3D pci_device_iommu_address_space(o->pci_dev); + + memory_region_del_subregion(dma_as->root, mr); + + object_unparent((OBJECT(mr))); + + trace_vfu_dma_unregister((uint64_t)info->iova.iov_base); +} + /* * TYPE_VFU_OBJECT depends on the availability of the 'socket' and 'device' * properties. It also depends on devices instantiated in QEMU. These @@ -387,6 +435,13 @@ static void vfu_object_init_ctx(VfuObject *o, Error **= errp) goto fail; } =20 + ret =3D vfu_setup_device_dma(o->vfu_ctx, &dma_register, &dma_unregiste= r); + if (ret < 0) { + error_setg(errp, "vfu: Failed to setup DMA handlers for %s", + o->device); + goto fail; + } + ret =3D vfu_realize_ctx(o->vfu_ctx); if (ret < 0) { error_setg(errp, "vfu: Failed to realize device %s- %s", diff --git a/hw/remote/trace-events b/hw/remote/trace-events index 2ef7884346..f945c7e33b 100644 --- a/hw/remote/trace-events +++ b/hw/remote/trace-events @@ -7,3 +7,5 @@ mpqemu_recv_io_error(int cmd, int size, int nfds) "failed t= o receive %d size %d, vfu_prop(const char *prop, const char *val) "vfu: setting %s as %s" vfu_cfg_read(uint32_t offset, uint32_t val) "vfu: cfg: 0x%u -> 0x%x" vfu_cfg_write(uint32_t offset, uint32_t val) "vfu: cfg: 0x%u <- 0x%x" +vfu_dma_register(uint64_t gpa, size_t len) "vfu: registering GPA 0x%"PRIx6= 4", %zu bytes" +vfu_dma_unregister(uint64_t gpa) "vfu: unregistering GPA 0x%"PRIx64"" --=20 2.20.1 From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653406957; cv=pass; d=zohomail.com; s=zohoarc; b=Gm/TgJMreB+1E8ublHHBX73r18HJg8pgJEFdyrHzAAb9fe1iqM3mmbOPtbN6vkm/or4/2DsMT39cvbpjKNPx1E+xStEYGZsHKxZzGU4rc0UPHBRknIC6PeR7JrwFSPwpmTmYEvu2s8nIfjxbGICHBZtQy14Y8W0iFsQfHQqi9aM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653406957; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=DH8Elj0BsRu9v/C7IDK76GSZTh9yRKpXnqnoY2xHMv8=; b=bfeUFqwRp6DdZabF2OKxRcF7JjUU68rSoXKPy5OdzwF5K6VHCzJ5mmUQdiiP53HJNaWD0anE7ubR58O/XyS2xeZLxQY8WqEDp9VLRER+PULwXIIvfXmOvXXgL8CzjOUhDk1QmQ5uFxoGC+dOW5q0BI4PRUld8FZ5taS0wQJvbU8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 165340695779632.2694218891404; Tue, 24 May 2022 08:42:37 -0700 (PDT) Received: from localhost ([::1]:41624 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntWg5-00040D-9y for importer2@patchew.org; Tue, 24 May 2022 11:42:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40032) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWVO-0008Ik-Gi for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:31 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:64492) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWVM-0003Z0-3y for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:30 -0400 Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFETSv009629; Tue, 24 May 2022 15:31:21 GMT Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6rmtxrjb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:21 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFGJmQ025923; Tue, 24 May 2022 15:31:19 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam08lp2041.outbound.protection.outlook.com [104.47.74.41]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3g6ph8drc9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:18 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:31:17 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:31:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=DH8Elj0BsRu9v/C7IDK76GSZTh9yRKpXnqnoY2xHMv8=; b=pYgzRZGoIkDvHkXGXO4tIu7j1nu2ZAmAKWOg8OG9UkQZtwqwsqpGxXpR5/2tJlxVRYEi 1C4vstS0sY3s3N3rQhmhqOO781HSEflNDYDXKY2GjPIO3z6wq1cIscvGpMYXBO88Pkl3 dZPmHCQ9B8a74lNcJmWHVDcPWEMT8zZXFRD2r4Rlfv+AyBZO/k2Nles+mTeqDmElO2fu rn73PSkvi12GzpcDNlSgbilSUmm9lOOwInVhgUoO/onf1PucqH7d5MVshmj39+d9OjEX 6E5jiza2M0MzTwrFx6j4jOF1+duBtndPFVSDjooJ/mgkQ7wKN5OXSeTj1sOkOKicssl7 Xw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ftAHHqD9n4WFzEbbK1SC/1xsetOFQkVTP75jqJrknSIOovX/TqBJ68e66OSWzqmAqFYs1LWF0G/YZ+DEQR1Dauc0ZP+80pDyR1kSnuhy7MSwPzhKTNHtcGNHiwC8nHPLX6a1mHTZ9bDHxd1ZW9IUEJFp1d8ZmX+I3aSImGFIXuvG/bKDYwyqVSiREd+6SqPFowyuLnaRQj0YHrNm7hKrKnU9A9a9WyIY1uSoi7YYZUHs3Nce026IbLcvOjAvd9+RHkjgUCMUAdkhPgeJmowINhW7dUQ6zI7fBo605H/2GARgZQsWteiy2iDCoJrXNOwZn6R0Aez1dLiEDEnJ+Dy+ZQ== 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=DH8Elj0BsRu9v/C7IDK76GSZTh9yRKpXnqnoY2xHMv8=; b=Iy2FlCY8vyMQiT3oMCp2mSjuOScliG3TD71/oRCsy2GotR/Iyewl+urc/uFx9UvWk5bRRcp54i7I81RQHgZ4iITmVwjgPVKBJW+i/a1MzNRcjh4Nri4wGINfjOWWOmom2ftFnMZ8JPsl911jEaVMRj1Vdxzq8Le6zxaujefgJXKjXBWmxYWCkICvLJWnMqZgOURh382RfCBgedtJZrVu+CSnAd04CgFoD84dJCm5IJQUHYA4ZUTmEl6vGqAhA2JWmcacrIQ1QHiQRr1Jm0joggI4aWnE8TY/M1xi3dw0apyRXijCkfXti/9Yh8zXw2ZONrgvXsLhXJKFld0pXLPZiA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DH8Elj0BsRu9v/C7IDK76GSZTh9yRKpXnqnoY2xHMv8=; b=qMjZykBBxLxmNIzGb9wze8SMBMcEPh1gSWYSJ5Tq1ghAbcceSHdVnfC7Tnm7zIkfmc7Zmwarv3NLPOB/4layZhcNIARys7fI19CvwvQbVEp0xqGQLuk3QS9r7OiBWYFVVJD9Nza8ojUjcJ9YOmelEGDmnx/KVx3CEmHuK/iw5Z0= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 12/14] vfio-user: handle PCI BAR accesses Date: Tue, 24 May 2022 11:30:31 -0400 Message-Id: X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9335400c-9013-41ef-9744-08da3d9a71d9 X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: dJVQkeFtolSMDeVxjTsvOa+CfsrcuDG1prT+SG3vsFV7QnUjEKBcfjJTqANGoIG5bUsUEAR8yc3kljCr8ELWtu0iEdMkHnI3o4n/FYPM1lL0/SJumTAnpoDmcXymFIbcEw1nWmNpetLyq1vBw0uzqaQ8aMSfQfbuFg4aqMpxq1DPT6nZWQMfWkHchFT+XInlYJTwKH2Yz29zbbfDRctSklPVsHYQRLzxwcbX/v6H04QNuYNcd//igVrjwztbYLsxWhFU/htxn6NdEy/MqqKbPDEFoKZvhZKyEdTvhntIgOCrDAmUmf/bdbDE4FH/dS4U8DypNgfj4S8nIQAhUJlNoY3SW8fwXP8sbjPaK1hJ/BrZxjwdlqA7PCqtp/xixeXtNBIXBZ0s2M9LlTJRb+g1nU/DEpvMGhCN5s3+UGNGfrYsWMP/vioTv2sswk9DgLG/Ojhi5fes5ObFaXqDXutQ9y1NIsYP5+H9RjUsHyH6LPbZaLTBazD9XOhnfrp9Bpa8W+bFofh/pvFa6cWOu3D6+Dhp7cQOw3zEVBES/Lqksp1sh+e4dUdq13yxXVmapEgmA0ivlORWtx6WPU7HJ5GWnZbDnBXhcYYvLXfEgIJmuQeTlx33/U6imDt3pB8f0mz1p4dCVmAXCvc2oryFpJz+4R3ctYEx2A+KziDSR2FsQLvzZhyCTtgJYV0H/6lpcr2s+G8LQ0Cdq3OgnKJ56dOO8g== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(83380400001)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?1JJj7SOGX2nHCmZgL7SfrM47wuxxLEtbc00kGnnOsHVmNN3JcvcyxKMWB+uL?= =?us-ascii?Q?FWo+ZP7fjc9ufsnGoTfgzp+wjwy0kkLztxmNUA5kQmjZCzslyeWORl3j9SCy?= =?us-ascii?Q?+pTFggAnLyWU6AS2p1Cbvsx53HZkxnvADsOvRYkRJTAKPeMDOwxsIcUl6/yo?= =?us-ascii?Q?IJOl4X3k+xn5p6cdaD6pd81EWN/mkkYEXuunWV1mg+50Zws2gJje+Cf0riVY?= =?us-ascii?Q?qY8zHFoo89NjpZXbQxpvDPeSjC+kia826DNkieRgwfnluImnMCUlWYrYXnpD?= =?us-ascii?Q?83PaBaAg+OqEHlWCiYSoaVPunUS4NMAymuC947hLWxOofIOxN2tcr1E0ri3M?= =?us-ascii?Q?2uCaqYeb3qp7FyKskr96qKgRENkQds2SWZaqrfjkf5ZybUEfNnd5f9eSI6dY?= =?us-ascii?Q?/UsW5ur5mwCifPtIijFxPcrZ0qw79mBFHbb4Xu1oxSimHcAzq/sVCe058k4g?= =?us-ascii?Q?nodybBllas1JtEsJmPAtQFHlXUXzCooHQI6dZy3yj3Iw0Rv8sWsLBweSxgG4?= =?us-ascii?Q?33ODeqKx/ZIrCSoklO5YbE02Nsttr5yez77G3qBxxpZ87tAIOpGjftmC7riK?= =?us-ascii?Q?9pfAgfT7dxy757MsJzJYIULdHRCLh1NMIEM0ZtjuqnrffTGjFec0svQ8cxT1?= =?us-ascii?Q?dJ0/I7sMs0xRQA0e/vJcpAOfeHwi+reu5hSKs2kJ7pSlUYr6dtRuKKMhyEds?= =?us-ascii?Q?AVWrqHS1+bf7n6xE9jPA3V46gtEnE2a3JA+ouWE7VuCVEujOpFr2rmwjjoWC?= =?us-ascii?Q?gWtNenXddHC6o4D+QFd1TapCt9I6mhrLrYtXdoE43ar6mv1bIHDQzIG+V6vC?= =?us-ascii?Q?+9+SOi5yCo3fnUZu+A257ARJ2BmzKtWToG3Ij9Vv0ooTVSXMWss6Q4pBwrd6?= =?us-ascii?Q?3iomW+1nDMipPoi2c3Wz0+F61EmvK8YraduNBsBX6qYquBqD/SBko3pKm4tM?= =?us-ascii?Q?bhaAYIcbL54cb7OxgukKAnDVby6dFVRwl7/k40oLTzV3ZrY9J8MeUBEDf5F/?= =?us-ascii?Q?w/HPu05M4N4IxvsVGVk7DpTwIngQlGpnPSOLYigpQjAerykx8Fs5Mgc3fgR8?= =?us-ascii?Q?R2nroAE/jKaZlLsRbF/PZ3ZJAvPcLvDlt3MK7mU18OF7cQZCIsYrIOplPBht?= =?us-ascii?Q?oQxaI5q2a6mocvIrPTe3x2XizFyV91Qdqxu5YrALsaa3q2rAH0FdPd7c/lzP?= =?us-ascii?Q?+bP9+253r2j7RQmAw/gJo0FK13EHlpzUPPtz19s2xA2vklkTL7dL1Fzbe9cg?= =?us-ascii?Q?oataf7UoXjuZc5RCRL97RtxnpxXh8JD1lc76lFZ515KiGg35diRS4Fkj/JwF?= =?us-ascii?Q?AuyF3kXpWIOGvRYlfR3pYgTKW+4r+4MVpIG1KKnVGHflnse/ICc0bn9pYyrz?= =?us-ascii?Q?xVnwCS6fpAb/nsodMs6TCIOxac0ilLYkOclqRJzBhg05ikNUT7ntFCs+78Cp?= =?us-ascii?Q?hb/PFP3FsSFBsdiWEsZMteblURB2c3cjd3rzOm389czx1krtznueXnnQ3bjT?= =?us-ascii?Q?6w/72lq6VmyVY9/DrJ40U59H9CucO4NM457TAszxc8c+nFojR88QF+RtfTJc?= =?us-ascii?Q?DqcOigp9TN1cEfLOrAUCEDmIIhya5VLVi96T+fx+JNV9EZF7EU4DGzNW4Gdy?= =?us-ascii?Q?kIZQjXlpnNNSKVS/ujyuJjxKUdCfhU7Eht2zku9Cb/G8wlv1jPCj6I4D4kKz?= =?us-ascii?Q?oA0kTUslOxlC3Bfn46fj5bIdrk+zKZPHeMrSLWWdj0YDajaWwkXHS65igYzj?= =?us-ascii?Q?DQsL6bS9BQ=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9335400c-9013-41ef-9744-08da3d9a71d9 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:31:17.3345 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UsjPY+KGxCZheHpP5YMw2KPU7XBxFOJfNbKwNoBJlKBQCMGZDsViTFiqXXTrCHJ8AJoCFijUkZVXUrRd2WWPDA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 malwarescore=0 spamscore=0 suspectscore=0 bulkscore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-GUID: 4yGIGeY6Al0NH9gWrUVPBfHuz1PyCVWd X-Proofpoint-ORIG-GUID: 4yGIGeY6Al0NH9gWrUVPBfHuz1PyCVWd Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.165.32; envelope-from=jag.raman@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653406960153100001 Content-Type: text/plain; charset="utf-8" Determine the BARs used by the PCI device and register handlers to manage the access to the same. Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- include/exec/memory.h | 3 + hw/remote/vfio-user-obj.c | 190 ++++++++++++++++++++++++++++++++ softmmu/physmem.c | 4 +- tests/qtest/fuzz/generic_fuzz.c | 9 +- hw/remote/trace-events | 3 + 5 files changed, 203 insertions(+), 6 deletions(-) diff --git a/include/exec/memory.h b/include/exec/memory.h index f1c19451bc..a6a0f4d8ad 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -2810,6 +2810,9 @@ MemTxResult address_space_write_cached_slow(MemoryReg= ionCache *cache, hwaddr addr, const void *buf, hwaddr len); =20 +int memory_access_size(MemoryRegion *mr, unsigned l, hwaddr addr); +bool prepare_mmio_access(MemoryRegion *mr); + static inline bool memory_access_is_direct(MemoryRegion *mr, bool is_write) { if (is_write) { diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c index 8d208f1294..ee28a93782 100644 --- a/hw/remote/vfio-user-obj.c +++ b/hw/remote/vfio-user-obj.c @@ -52,6 +52,7 @@ #include "hw/qdev-core.h" #include "hw/pci/pci.h" #include "qemu/timer.h" +#include "exec/memory.h" =20 #define TYPE_VFU_OBJECT "x-vfio-user-server" OBJECT_DECLARE_TYPE(VfuObject, VfuObjectClass, VFU_OBJECT) @@ -332,6 +333,193 @@ static void dma_unregister(vfu_ctx_t *vfu_ctx, vfu_dm= a_info_t *info) trace_vfu_dma_unregister((uint64_t)info->iova.iov_base); } =20 +static int vfu_object_mr_rw(MemoryRegion *mr, uint8_t *buf, hwaddr offset, + hwaddr size, const bool is_write) +{ + uint8_t *ptr =3D buf; + bool release_lock =3D false; + uint8_t *ram_ptr =3D NULL; + MemTxResult result; + int access_size; + uint64_t val; + + if (memory_access_is_direct(mr, is_write)) { + /** + * Some devices expose a PCI expansion ROM, which could be buffer + * based as compared to other regions which are primarily based on + * MemoryRegionOps. memory_region_find() would already check + * for buffer overflow, we don't need to repeat it here. + */ + ram_ptr =3D memory_region_get_ram_ptr(mr); + + if (is_write) { + memcpy((ram_ptr + offset), buf, size); + } else { + memcpy(buf, (ram_ptr + offset), size); + } + + return 0; + } + + while (size) { + /** + * The read/write logic used below is similar to the ones in + * flatview_read/write_continue() + */ + release_lock =3D prepare_mmio_access(mr); + + access_size =3D memory_access_size(mr, size, offset); + + if (is_write) { + val =3D ldn_he_p(ptr, access_size); + + result =3D memory_region_dispatch_write(mr, offset, val, + size_memop(access_size), + MEMTXATTRS_UNSPECIFIED); + } else { + result =3D memory_region_dispatch_read(mr, offset, &val, + size_memop(access_size), + MEMTXATTRS_UNSPECIFIED); + + stn_he_p(ptr, access_size, val); + } + + if (release_lock) { + qemu_mutex_unlock_iothread(); + release_lock =3D false; + } + + if (result !=3D MEMTX_OK) { + return -1; + } + + size -=3D access_size; + ptr +=3D access_size; + offset +=3D access_size; + } + + return 0; +} + +static size_t vfu_object_bar_rw(PCIDevice *pci_dev, int pci_bar, + hwaddr bar_offset, char * const buf, + hwaddr len, const bool is_write) +{ + MemoryRegionSection section =3D { 0 }; + uint8_t *ptr =3D (uint8_t *)buf; + MemoryRegion *section_mr =3D NULL; + uint64_t section_size; + hwaddr section_offset; + hwaddr size =3D 0; + + while (len) { + section =3D memory_region_find(pci_dev->io_regions[pci_bar].memory, + bar_offset, len); + + if (!section.mr) { + warn_report("vfu: invalid address 0x%"PRIx64"", bar_offset); + return size; + } + + section_mr =3D section.mr; + section_offset =3D section.offset_within_region; + section_size =3D int128_get64(section.size); + + if (is_write && section_mr->readonly) { + warn_report("vfu: attempting to write to readonly region in " + "bar %d - [0x%"PRIx64" - 0x%"PRIx64"]", + pci_bar, bar_offset, + (bar_offset + section_size)); + memory_region_unref(section_mr); + return size; + } + + if (vfu_object_mr_rw(section_mr, ptr, section_offset, + section_size, is_write)) { + warn_report("vfu: failed to %s " + "[0x%"PRIx64" - 0x%"PRIx64"] in bar %d", + is_write ? "write to" : "read from", bar_offset, + (bar_offset + section_size), pci_bar); + memory_region_unref(section_mr); + return size; + } + + size +=3D section_size; + bar_offset +=3D section_size; + ptr +=3D section_size; + len -=3D section_size; + + memory_region_unref(section_mr); + } + + return size; +} + +/** + * VFU_OBJECT_BAR_HANDLER - macro for defining handlers for PCI BARs. + * + * To create handler for BAR number 2, VFU_OBJECT_BAR_HANDLER(2) would + * define vfu_object_bar2_handler + */ +#define VFU_OBJECT_BAR_HANDLER(BAR_NO) = \ + static ssize_t vfu_object_bar##BAR_NO##_handler(vfu_ctx_t *vfu_ctx, = \ + char * const buf, size_t count, = \ + loff_t offset, const bool is_write= ) \ + { = \ + VfuObject *o =3D vfu_get_private(vfu_ctx); = \ + PCIDevice *pci_dev =3D o->pci_dev; = \ + = \ + return vfu_object_bar_rw(pci_dev, BAR_NO, offset, = \ + buf, count, is_write); = \ + } = \ + +VFU_OBJECT_BAR_HANDLER(0) +VFU_OBJECT_BAR_HANDLER(1) +VFU_OBJECT_BAR_HANDLER(2) +VFU_OBJECT_BAR_HANDLER(3) +VFU_OBJECT_BAR_HANDLER(4) +VFU_OBJECT_BAR_HANDLER(5) +VFU_OBJECT_BAR_HANDLER(6) + +static vfu_region_access_cb_t *vfu_object_bar_handlers[PCI_NUM_REGIONS] = =3D { + &vfu_object_bar0_handler, + &vfu_object_bar1_handler, + &vfu_object_bar2_handler, + &vfu_object_bar3_handler, + &vfu_object_bar4_handler, + &vfu_object_bar5_handler, + &vfu_object_bar6_handler, +}; + +/** + * vfu_object_register_bars - Identify active BAR regions of pdev and setup + * callbacks to handle read/write accesses + */ +static void vfu_object_register_bars(vfu_ctx_t *vfu_ctx, PCIDevice *pdev) +{ + int flags =3D VFU_REGION_FLAG_RW; + int i; + + for (i =3D 0; i < PCI_NUM_REGIONS; i++) { + if (!pdev->io_regions[i].size) { + continue; + } + + if ((i =3D=3D VFU_PCI_DEV_ROM_REGION_IDX) || + pdev->io_regions[i].memory->readonly) { + flags &=3D ~VFU_REGION_FLAG_WRITE; + } + + vfu_setup_region(vfu_ctx, VFU_PCI_DEV_BAR0_REGION_IDX + i, + (size_t)pdev->io_regions[i].size, + vfu_object_bar_handlers[i], + flags, NULL, 0, -1, 0); + + trace_vfu_bar_register(i, pdev->io_regions[i].addr, + pdev->io_regions[i].size); + } +} + /* * TYPE_VFU_OBJECT depends on the availability of the 'socket' and 'device' * properties. It also depends on devices instantiated in QEMU. These @@ -442,6 +630,8 @@ static void vfu_object_init_ctx(VfuObject *o, Error **e= rrp) goto fail; } =20 + vfu_object_register_bars(o->vfu_ctx, o->pci_dev); + ret =3D vfu_realize_ctx(o->vfu_ctx); if (ret < 0) { error_setg(errp, "vfu: Failed to realize device %s- %s", diff --git a/softmmu/physmem.c b/softmmu/physmem.c index 657841eed0..fb16be57a6 100644 --- a/softmmu/physmem.c +++ b/softmmu/physmem.c @@ -2719,7 +2719,7 @@ void memory_region_flush_rom_device(MemoryRegion *mr,= hwaddr addr, hwaddr size) invalidate_and_set_dirty(mr, addr, size); } =20 -static int memory_access_size(MemoryRegion *mr, unsigned l, hwaddr addr) +int memory_access_size(MemoryRegion *mr, unsigned l, hwaddr addr) { unsigned access_size_max =3D mr->ops->valid.max_access_size; =20 @@ -2746,7 +2746,7 @@ static int memory_access_size(MemoryRegion *mr, unsig= ned l, hwaddr addr) return l; } =20 -static bool prepare_mmio_access(MemoryRegion *mr) +bool prepare_mmio_access(MemoryRegion *mr) { bool release_lock =3D false; =20 diff --git a/tests/qtest/fuzz/generic_fuzz.c b/tests/qtest/fuzz/generic_fuz= z.c index 25df19fd5a..447ffe8178 100644 --- a/tests/qtest/fuzz/generic_fuzz.c +++ b/tests/qtest/fuzz/generic_fuzz.c @@ -144,7 +144,7 @@ static void *pattern_alloc(pattern p, size_t len) return buf; } =20 -static int memory_access_size(MemoryRegion *mr, unsigned l, hwaddr addr) +static int fuzz_memory_access_size(MemoryRegion *mr, unsigned l, hwaddr ad= dr) { unsigned access_size_max =3D mr->ops->valid.max_access_size; =20 @@ -242,11 +242,12 @@ void fuzz_dma_read_cb(size_t addr, size_t len, Memory= Region *mr) =20 /* * If mr1 isn't RAM, address_space_translate doesn't update l. Use - * memory_access_size to identify the number of bytes that it is = safe - * to write without accidentally writing to another MemoryRegion. + * fuzz_memory_access_size to identify the number of bytes that it + * is safe to write without accidentally writing to another + * MemoryRegion. */ if (!memory_region_is_ram(mr1)) { - l =3D memory_access_size(mr1, l, addr1); + l =3D fuzz_memory_access_size(mr1, l, addr1); } if (memory_region_is_ram(mr1) || memory_region_is_romd(mr1) || diff --git a/hw/remote/trace-events b/hw/remote/trace-events index f945c7e33b..847d50d88f 100644 --- a/hw/remote/trace-events +++ b/hw/remote/trace-events @@ -9,3 +9,6 @@ vfu_cfg_read(uint32_t offset, uint32_t val) "vfu: cfg: 0x%u= -> 0x%x" vfu_cfg_write(uint32_t offset, uint32_t val) "vfu: cfg: 0x%u <- 0x%x" vfu_dma_register(uint64_t gpa, size_t len) "vfu: registering GPA 0x%"PRIx6= 4", %zu bytes" vfu_dma_unregister(uint64_t gpa) "vfu: unregistering GPA 0x%"PRIx64"" +vfu_bar_register(int i, uint64_t addr, uint64_t size) "vfu: BAR %d: addr 0= x%"PRIx64" size 0x%"PRIx64"" +vfu_bar_rw_enter(const char *op, uint64_t addr) "vfu: %s request for BAR a= ddress 0x%"PRIx64"" +vfu_bar_rw_exit(const char *op, uint64_t addr) "vfu: Finished %s of BAR ad= dress 0x%"PRIx64"" --=20 2.20.1 From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653408872; cv=pass; d=zohomail.com; s=zohoarc; b=kvj+ypJeCIfa2f+FeFr2TkaOIk5uyVE9gNNMUnfibSPAMxvF4wLLEXk3YwVTsnX3OLKBfXbbSoEzkk+L4SH+LloBrt35thf9NI0mkQZhthud20oJU588rbmdj0wkSlI9uhoIZz5B9an//dYUL8dYUEUQOl/5LwpGInJiR6fRw+g= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653408872; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=oA3buILgr1opUPXBGKpMa2LPGfj42Ra/K46zYSugDbM=; b=HZervFG2qtLu0tGPE2YEh4FJCKCtRyRLksBOYSEr7ncIs8fdscXU3TtuAtzgaHkGnTIUHPDMu0NyC1VlXqb0/ZEWxLaAffT161IKtzZ/YJTjEIiFSsGpw+dqhZOfiMO8+2CWw2PZ1UR/jM4FpGR2g3TO4M+X5x2Gb+35K3kYJiQ= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1653408872414948.9965183661044; Tue, 24 May 2022 09:14:32 -0700 (PDT) Received: from localhost ([::1]:39442 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntXB1-0001IS-7H for importer2@patchew.org; Tue, 24 May 2022 12:14:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40052) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWVQ-0008JT-CK for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:36 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:5482) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWVN-0003ZU-HL for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:32 -0400 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFJ4l9018983; Tue, 24 May 2022 15:31:24 GMT Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6pp06scc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:23 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFGNNJ026316; Tue, 24 May 2022 15:31:22 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam08lp2043.outbound.protection.outlook.com [104.47.73.43]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3g6ph8drdv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:22 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:31:20 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:31:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=oA3buILgr1opUPXBGKpMa2LPGfj42Ra/K46zYSugDbM=; b=RhsFS8wwVRpssQdantQxdtgvN9TJg6kgKzCcGor3Tw18rW3n8hnKDTv+yTbOjjVT7Vu3 hbASdXAA09jGOgZUWBS26LrQLUgxJaOMHBZw8f+Jpc5IA6tCG00Fkl5semkZT+Ms6vh0 57BTlUpUR2bJ42zv86CJHxrZApDGdPkhRfKvwxNHRa33udimSMSlKDdaWif0fPRhkbYP biGYWPe67rLcYMSnwj/3SNTvCwak9KmR6LVhymA+fUqUJji/dODYwIw55t0LGUFh9ZnV yv6hVLc8vvyMg4Qt2Av5Tv8hVIf4qnFD5j4mC4NPxfNiykpDFIqtVPfTkiui/ZcQWoR+ yA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EpP88F3nz1C4KqM3DL4rggpLPD66vl7feXPZl6TYAt+OgauhuvQJVlIhEdJlqapjdpc9jdhKjT4xVavd7awBgxXc/WiCgI8SHwoAU0tUTG+pa2lWLjBYKsDhYKFqVc6JNAsXs02RrZDQfSJI/POZtNXqWrVBZ8FHh89gBleDmJSV9TfU00aaoJA5SYWZUOkhsfFd0dyH3Tr7u093SISNe4gIZlPh8ake9YdcDZv1DkEDA9vjsM2GMraYJi8qV8TodKDdNUR1il/TeUP8cy0bcCTRUxCqx62FbT4lpoubKNSyHzCm0BAzSHP4UhjmIuZVCk0l93d/vk5JqMoxAkzS9w== 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=oA3buILgr1opUPXBGKpMa2LPGfj42Ra/K46zYSugDbM=; b=lohEj2oXdtjCOTZTewT3mPbB/Vb0jlijF9c7/AZmWyDvGyvFVf5E8kqpucX+MaElAgsqOBhZrxPLZeiV3xaJyp8jw6qkYariU0ImbsOGItDor3hBuBDCwKlPRWuL0AkERG0GWEFUgqVHFpy8fN1Footd6QYlhQPz4pAgaeuiecrwRq5YcdEELK65/oF2dQF1JFIZuF4Ba14rz0geXLHT1WPZv6/4oKRGSmFute9SgYaD59E/2ACUrnkjug1QAVXufVXc4Wm50Jr//F8M61NpqEdMxVz8RpwV9UvL6TC1m8+iRsIewpNPVhlDnqAiKkJEplbq+O8MpJwceZ4u5sigUw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oA3buILgr1opUPXBGKpMa2LPGfj42Ra/K46zYSugDbM=; b=js4OcV4zHEHvDM30blVup6+7oqVdgb6+CdAtQ+r5oHKUfbl1EamXA9dwEXh31HQ/JkATWWePATZNwWf9qX0hM5mQju0jRUKRO5Wc86jZ07MHPB99oKqkUJRf3iw5iRmkTj8lhIpit0wL8tpM+VmfOU5wL0Ajw5Za+FaKr5qV8Q8= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 13/14] vfio-user: handle device interrupts Date: Tue, 24 May 2022 11:30:32 -0400 Message-Id: <2a492c16e0464f70f7be1fd9c04172f4f18d14ca.1653404595.git.jag.raman@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 86a064a3-157e-4def-68b9-08da3d9a7378 X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: 2ILZiBBPIMUG1bfbOe73cCF77WXdFUWbQYebJp1k6lk6HdLyw7YbIdKCUolepOxVWqRqJ/bXLVAKQhTYmYohcJIpaZQri72jbC+S1+41isfH9O3DeU78hcVInTys7GvaQKoV3Vg7pEEPvPYmMsgkR6O9hoQWFDXvTIQvEbAk86bcGQPrd4bsTtKNgmrZ8HW74aEvxI9gcVmkCYwi9RCvvBKU5b1Cb96ozrNeP39bUJyJLR69upO4a83EqzVZbCTcbwigxcJzZLwdcmuBYhT9NQCdsKdDrh0Wbd9E1GP6STvNvqbeFBQe5m21SIL8Viazwyt8s9qUS66+mDRumXtgbtem51tf/Ls4L/XLe+6v3p3Mf/pW3n0FrNISxd2xPCwNd3S1F8cGZFGqIrWi0fx7PfLPs6ZCBurkaxZSx8DhQsgUI4SDT99IigEszyZsL6nKjViMRb9GktusgZs4LqSw/qdzwWj40xyQQf8jIxvgifPibhAA86aGvgnozuPoKmathA99Zmz2fLJlnumblmR5BJgPd0e0td56mGboIGY+y2iVfOUGiF3V1LfAYrY2eKEJ9Mg9ldMLC7bIQpd6dIKXFa3IKSa5t5ByTORXRb5VZ8is4tj+JJ69E0/IFD4SW1pbryUPnxuZJkWb5jQdkl7IvnsaT0S9cDma7pYTT2WD8GbutkVj4HLYr3SiJpZ3VRiVJZFqccOLQdRvDu2HU2hRxA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(30864003)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(83380400001)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Yn/SGMVJ3II3PPZJcDPg3Bst9tmkpJXlYPl7U0FF2P16t3zAkAXy3Ke+WEG+?= =?us-ascii?Q?eNz2AMG7HLCGQu9JNc3vsVeEX3/I4zDBYFiK8oAJ+I01le3SdpVjKiWJsmTg?= =?us-ascii?Q?251IyqKbiI5G0Z9UL0p/d4C/cFVoq+HOmsfw0b0L2TXm/SLsk2UwPg9bZvnd?= =?us-ascii?Q?fqtmIxeG5Yq9+04o2xmPpSsGVNothwa6+VruDgxDvbekMnoSinqRt+e4/mce?= =?us-ascii?Q?SSz1y1CiE8ADRDU7BE636e9v3eOzQSzAyVbFubBaSWlGvnYCUiL63FWKJ8JY?= =?us-ascii?Q?6u/AN1y2jQwoLrsUqFv8Z0i4vNfyVJp/11P1Bs2SxinhSD3iw6rRJ7uPvXx4?= =?us-ascii?Q?noQRJm0TWmx/zoZrS2IbQLifC1BsuEOKdIx5cTYWjsJCpjC+KD529vPG455X?= =?us-ascii?Q?WAbg+jLJQUEIp8S/p3Lh/z8CmM4zJJ+dJvwnwoBMR5G0aVFVIXUJ9A8vKS2j?= =?us-ascii?Q?CxVFsq5RqgQ9FFWvbGtCeCRff1EDR2uUbWoH39Uf0HyeOuyLcdmT08KiQcdM?= =?us-ascii?Q?FPPudSNxBn2NnL3sRd7umib02zZAiQFLrHmXHqrfdWG5xvNRYXxEXqzDwP0k?= =?us-ascii?Q?s7+/tUVvEnmn25xxyx6yCmq3e0I9uaYv5bJoRcUyaRqJ0lyb/Sdq5twC09Of?= =?us-ascii?Q?OY0hL5Us9B6zLNSzk2lwFus5E3TsV9aqzrEboPd9L/3a+C/NsI5WSZzu3kLz?= =?us-ascii?Q?gvZE1YXyk7m+F2sYXYGThpU6H3++60Bp0wC4k03A3T6qGy4DfNaVQEB9WIVF?= =?us-ascii?Q?Dr+X+OaJd5VurkH48PiozoE2w+XvKj9hCa1oAW7S2xKUqZc705RLh5rW2K2z?= =?us-ascii?Q?I6R1mUgeOBv40ZB6rIwkIAgRoVKqnFBkXfleNpz6eBoPsN/C7Z025H/jDgxJ?= =?us-ascii?Q?UxrZMIpwHyL1J8gviEiGQEyUFJ8dgo5ZG0QSgbH/apn6KWEFIBM3aYb+doBd?= =?us-ascii?Q?knu+uLAyA4QKFWot2IrCL2MjprUNTko8CQsIiwyo7rnEDkP3iNb3wxo5IbAW?= =?us-ascii?Q?Vx/V4+O+T4EwJ4D68wHqzXIgaNeM2dW/Ngsf6xSi7zLqQXwMK/8uDfUPZqFf?= =?us-ascii?Q?boUgYZPRBce9cPTSGz250Ab4kuxuUPGvI12lJy8A84P+17gPw0CBwp4Rw1hE?= =?us-ascii?Q?wb4vxD/LelMlF6EjdtYeizYKEd5WQXJykZDmh2YzG/Akne+9r/OJca+si/Wr?= =?us-ascii?Q?nVJmAjLXYuhn3S4Fx1qLv8X4Ll5zCFunqmJ0OjC5NdYOQEIUeWUBx2dW+IBS?= =?us-ascii?Q?9mzTzaz6eNlglr/CgteoeCgWBTUe++kFZjxD9lZDPVsTWo2KW6mRg5yeUU8+?= =?us-ascii?Q?DXJiuFqqj1vll6919u8bLl0NxG9kxojN9EWTAK3vKb0pu8t7JCmwDw4wGSmv?= =?us-ascii?Q?fDc1/CoApGO0gDj6s3gsyfJg93QHuLTYMaPoKEkjJ23FuVe65yA7yOcEyjl3?= =?us-ascii?Q?qsdojcI22coBdEhkBbGt7wE8K78+jtxHlPWTbBTrnU63YRemGB8LXPFzz9jQ?= =?us-ascii?Q?wpsI3J3VviBl5o7/ut03n2wEVAGW3bOeGUIegTDLBJvIPOPqjUthOLFTUvAF?= =?us-ascii?Q?xgpQI/WzVgKKHqRSa2pJU2j5rC8QQQGM3UipR0KX3sv+51TjcdEK6Zvfvkii?= =?us-ascii?Q?N29CwrKnGubMfldq2eFiZNsG271bK8WLdZptNAYM+lJKuWDucfOjq4I38hDu?= =?us-ascii?Q?1AuMhAK0miFozUz5nYj2eRXhNp9162v3IlsUkTd6SUfTJgqH21HrT1ZGQmQk?= =?us-ascii?Q?2HUjbqlpug=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86a064a3-157e-4def-68b9-08da3d9a7378 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:31:20.0687 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xtsraG8Hx25jt8L+h/j7YwsiF4bYRpW46hVwDeYRZu483BQk/4D93IPJOVp5KZHHhfIOYc96HpWm65q4Vd8Btg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 malwarescore=0 spamscore=0 suspectscore=0 bulkscore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-ORIG-GUID: 7lttbeJv89BJa6CbBFP-zEeDsF2wLgap X-Proofpoint-GUID: 7lttbeJv89BJa6CbBFP-zEeDsF2wLgap Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.165.32; envelope-from=jag.raman@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653408874309100001 Content-Type: text/plain; charset="utf-8" Forward remote device's interrupts to the guest Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- include/hw/pci/pci.h | 13 ++++ include/hw/remote/vfio-user-obj.h | 6 ++ hw/pci/msi.c | 16 ++-- hw/pci/msix.c | 10 ++- hw/pci/pci.c | 13 ++++ hw/remote/machine.c | 14 +++- hw/remote/vfio-user-obj.c | 123 ++++++++++++++++++++++++++++++ stubs/vfio-user-obj.c | 6 ++ MAINTAINERS | 1 + hw/remote/trace-events | 1 + stubs/meson.build | 1 + 11 files changed, 193 insertions(+), 11 deletions(-) create mode 100644 include/hw/remote/vfio-user-obj.h create mode 100644 stubs/vfio-user-obj.c diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 44dacfa224..b54b6ef88f 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -16,6 +16,7 @@ extern bool pci_available; #define PCI_SLOT(devfn) (((devfn) >> 3) & 0x1f) #define PCI_FUNC(devfn) ((devfn) & 0x07) #define PCI_BUILD_BDF(bus, devfn) ((bus << 8) | (devfn)) +#define PCI_BDF_TO_DEVFN(x) ((x) & 0xff) #define PCI_BUS_MAX 256 #define PCI_DEVFN_MAX 256 #define PCI_SLOT_MAX 32 @@ -127,6 +128,10 @@ typedef void PCIMapIORegionFunc(PCIDevice *pci_dev, in= t region_num, pcibus_t addr, pcibus_t size, int type); typedef void PCIUnregisterFunc(PCIDevice *pci_dev); =20 +typedef void MSITriggerFunc(PCIDevice *dev, MSIMessage msg); +typedef MSIMessage MSIPrepareMessageFunc(PCIDevice *dev, unsigned vector); +typedef MSIMessage MSIxPrepareMessageFunc(PCIDevice *dev, unsigned vector); + typedef struct PCIIORegion { pcibus_t addr; /* current PCI mapping address. -1 means not mapped */ #define PCI_BAR_UNMAPPED (~(pcibus_t)0) @@ -329,6 +334,14 @@ struct PCIDevice { /* Space to store MSIX table & pending bit array */ uint8_t *msix_table; uint8_t *msix_pba; + + /* May be used by INTx or MSI during interrupt notification */ + void *irq_opaque; + + MSITriggerFunc *msi_trigger; + MSIPrepareMessageFunc *msi_prepare_message; + MSIxPrepareMessageFunc *msix_prepare_message; + /* MemoryRegion container for msix exclusive BAR setup */ MemoryRegion msix_exclusive_bar; /* Memory Regions for MSIX table and pending bit entries. */ diff --git a/include/hw/remote/vfio-user-obj.h b/include/hw/remote/vfio-use= r-obj.h new file mode 100644 index 0000000000..87ab78b875 --- /dev/null +++ b/include/hw/remote/vfio-user-obj.h @@ -0,0 +1,6 @@ +#ifndef VFIO_USER_OBJ_H +#define VFIO_USER_OBJ_H + +void vfu_object_set_bus_irq(PCIBus *pci_bus); + +#endif diff --git a/hw/pci/msi.c b/hw/pci/msi.c index 47d2b0f33c..d556e17a09 100644 --- a/hw/pci/msi.c +++ b/hw/pci/msi.c @@ -134,7 +134,7 @@ void msi_set_message(PCIDevice *dev, MSIMessage msg) pci_set_word(dev->config + msi_data_off(dev, msi64bit), msg.data); } =20 -MSIMessage msi_get_message(PCIDevice *dev, unsigned int vector) +static MSIMessage msi_prepare_message(PCIDevice *dev, unsigned int vector) { uint16_t flags =3D pci_get_word(dev->config + msi_flags_off(dev)); bool msi64bit =3D flags & PCI_MSI_FLAGS_64BIT; @@ -159,6 +159,11 @@ MSIMessage msi_get_message(PCIDevice *dev, unsigned in= t vector) return msg; } =20 +MSIMessage msi_get_message(PCIDevice *dev, unsigned int vector) +{ + return dev->msi_prepare_message(dev, vector); +} + bool msi_enabled(const PCIDevice *dev) { return msi_present(dev) && @@ -241,6 +246,8 @@ int msi_init(struct PCIDevice *dev, uint8_t offset, 0xffffffff >> (PCI_MSI_VECTORS_MAX - nr_vectors)); } =20 + dev->msi_prepare_message =3D msi_prepare_message; + return 0; } =20 @@ -256,6 +263,7 @@ void msi_uninit(struct PCIDevice *dev) cap_size =3D msi_cap_sizeof(flags); pci_del_capability(dev, PCI_CAP_ID_MSI, cap_size); dev->cap_present &=3D ~QEMU_PCI_CAP_MSI; + dev->msi_prepare_message =3D NULL; =20 MSI_DEV_PRINTF(dev, "uninit\n"); } @@ -334,11 +342,7 @@ void msi_notify(PCIDevice *dev, unsigned int vector) =20 void msi_send_message(PCIDevice *dev, MSIMessage msg) { - MemTxAttrs attrs =3D {}; - - attrs.requester_id =3D pci_requester_id(dev); - address_space_stl_le(&dev->bus_master_as, msg.address, msg.data, - attrs, NULL); + dev->msi_trigger(dev, msg); } =20 /* Normally called by pci_default_write_config(). */ diff --git a/hw/pci/msix.c b/hw/pci/msix.c index ae9331cd0b..6f85192d6f 100644 --- a/hw/pci/msix.c +++ b/hw/pci/msix.c @@ -31,7 +31,7 @@ #define MSIX_ENABLE_MASK (PCI_MSIX_FLAGS_ENABLE >> 8) #define MSIX_MASKALL_MASK (PCI_MSIX_FLAGS_MASKALL >> 8) =20 -MSIMessage msix_get_message(PCIDevice *dev, unsigned vector) +static MSIMessage msix_prepare_message(PCIDevice *dev, unsigned vector) { uint8_t *table_entry =3D dev->msix_table + vector * PCI_MSIX_ENTRY_SIZ= E; MSIMessage msg; @@ -41,6 +41,11 @@ MSIMessage msix_get_message(PCIDevice *dev, unsigned vec= tor) return msg; } =20 +MSIMessage msix_get_message(PCIDevice *dev, unsigned vector) +{ + return dev->msix_prepare_message(dev, vector); +} + /* * Special API for POWER to configure the vectors through * a side channel. Should never be used by devices. @@ -344,6 +349,8 @@ int msix_init(struct PCIDevice *dev, unsigned short nen= tries, "msix-pba", pba_size); memory_region_add_subregion(pba_bar, pba_offset, &dev->msix_pba_mmio); =20 + dev->msix_prepare_message =3D msix_prepare_message; + return 0; } =20 @@ -429,6 +436,7 @@ void msix_uninit(PCIDevice *dev, MemoryRegion *table_ba= r, MemoryRegion *pba_bar) g_free(dev->msix_entry_used); dev->msix_entry_used =3D NULL; dev->cap_present &=3D ~QEMU_PCI_CAP_MSIX; + dev->msix_prepare_message =3D NULL; } =20 void msix_uninit_exclusive_bar(PCIDevice *dev) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index a9b37f8000..435f84393c 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -317,6 +317,15 @@ void pci_device_deassert_intx(PCIDevice *dev) } } =20 +static void pci_msi_trigger(PCIDevice *dev, MSIMessage msg) +{ + MemTxAttrs attrs =3D {}; + + attrs.requester_id =3D pci_requester_id(dev); + address_space_stl_le(&dev->bus_master_as, msg.address, msg.data, + attrs, NULL); +} + static void pci_reset_regions(PCIDevice *dev) { int r; @@ -1212,6 +1221,8 @@ static void pci_qdev_unrealize(DeviceState *dev) =20 pci_device_deassert_intx(pci_dev); do_pci_unregister_device(pci_dev); + + pci_dev->msi_trigger =3D NULL; } =20 void pci_register_bar(PCIDevice *pci_dev, int region_num, @@ -2251,6 +2262,8 @@ static void pci_qdev_realize(DeviceState *qdev, Error= **errp) } =20 pci_set_power(pci_dev, true); + + pci_dev->msi_trigger =3D pci_msi_trigger; } =20 PCIDevice *pci_new_multifunction(int devfn, bool multifunction, diff --git a/hw/remote/machine.c b/hw/remote/machine.c index 645b54343d..75d550daae 100644 --- a/hw/remote/machine.c +++ b/hw/remote/machine.c @@ -23,6 +23,8 @@ #include "hw/remote/iommu.h" #include "hw/qdev-core.h" #include "hw/remote/iommu.h" +#include "hw/remote/vfio-user-obj.h" +#include "hw/pci/msi.h" =20 static void remote_machine_init(MachineState *machine) { @@ -54,12 +56,16 @@ static void remote_machine_init(MachineState *machine) =20 if (s->vfio_user) { remote_iommu_setup(pci_host->bus); - } =20 - remote_iohub_init(&s->iohub); + msi_nonbroken =3D true; + + vfu_object_set_bus_irq(pci_host->bus); + } else { + remote_iohub_init(&s->iohub); =20 - pci_bus_irqs(pci_host->bus, remote_iohub_set_irq, remote_iohub_map_irq, - &s->iohub, REMOTE_IOHUB_NB_PIRQS); + pci_bus_irqs(pci_host->bus, remote_iohub_set_irq, remote_iohub_map= _irq, + &s->iohub, REMOTE_IOHUB_NB_PIRQS); + } =20 qbus_set_hotplug_handler(BUS(pci_host->bus), OBJECT(s)); } diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c index ee28a93782..eeb165a805 100644 --- a/hw/remote/vfio-user-obj.c +++ b/hw/remote/vfio-user-obj.c @@ -53,6 +53,9 @@ #include "hw/pci/pci.h" #include "qemu/timer.h" #include "exec/memory.h" +#include "hw/pci/msi.h" +#include "hw/pci/msix.h" +#include "hw/remote/vfio-user-obj.h" =20 #define TYPE_VFU_OBJECT "x-vfio-user-server" OBJECT_DECLARE_TYPE(VfuObject, VfuObjectClass, VFU_OBJECT) @@ -96,6 +99,10 @@ struct VfuObject { Error *unplug_blocker; =20 int vfu_poll_fd; + + MSITriggerFunc *default_msi_trigger; + MSIPrepareMessageFunc *default_msi_prepare_message; + MSIxPrepareMessageFunc *default_msix_prepare_message; }; =20 static void vfu_object_init_ctx(VfuObject *o, Error **errp); @@ -520,6 +527,111 @@ static void vfu_object_register_bars(vfu_ctx_t *vfu_c= tx, PCIDevice *pdev) } } =20 +static int vfu_object_map_irq(PCIDevice *pci_dev, int intx) +{ + int pci_bdf =3D PCI_BUILD_BDF(pci_bus_num(pci_get_bus(pci_dev)), + pci_dev->devfn); + + return pci_bdf; +} + +static void vfu_object_set_irq(void *opaque, int pirq, int level) +{ + PCIBus *pci_bus =3D opaque; + PCIDevice *pci_dev =3D NULL; + vfu_ctx_t *vfu_ctx =3D NULL; + int pci_bus_num, devfn; + + if (level) { + pci_bus_num =3D PCI_BUS_NUM(pirq); + devfn =3D PCI_BDF_TO_DEVFN(pirq); + + /* + * pci_find_device() performs at O(1) if the device is attached + * to the root PCI bus. Whereas, if the device is attached to a + * secondary PCI bus (such as when a root port is involved), + * finding the parent PCI bus could take O(n) + */ + pci_dev =3D pci_find_device(pci_bus, pci_bus_num, devfn); + + vfu_ctx =3D pci_dev->irq_opaque; + + g_assert(vfu_ctx); + + vfu_irq_trigger(vfu_ctx, 0); + } +} + +static MSIMessage vfu_object_msi_prepare_msg(PCIDevice *pci_dev, + unsigned int vector) +{ + MSIMessage msg; + + msg.address =3D 0; + msg.data =3D vector; + + return msg; +} + +static void vfu_object_msi_trigger(PCIDevice *pci_dev, MSIMessage msg) +{ + vfu_ctx_t *vfu_ctx =3D pci_dev->irq_opaque; + + vfu_irq_trigger(vfu_ctx, msg.data); +} + +static void vfu_object_setup_msi_cbs(VfuObject *o) +{ + o->default_msi_trigger =3D o->pci_dev->msi_trigger; + o->default_msi_prepare_message =3D o->pci_dev->msi_prepare_message; + o->default_msix_prepare_message =3D o->pci_dev->msix_prepare_message; + + o->pci_dev->msi_trigger =3D vfu_object_msi_trigger; + o->pci_dev->msi_prepare_message =3D vfu_object_msi_prepare_msg; + o->pci_dev->msix_prepare_message =3D vfu_object_msi_prepare_msg; +} + +static void vfu_object_restore_msi_cbs(VfuObject *o) +{ + o->pci_dev->msi_trigger =3D o->default_msi_trigger; + o->pci_dev->msi_prepare_message =3D o->default_msi_prepare_message; + o->pci_dev->msix_prepare_message =3D o->default_msix_prepare_message; +} + +static int vfu_object_setup_irqs(VfuObject *o, PCIDevice *pci_dev) +{ + vfu_ctx_t *vfu_ctx =3D o->vfu_ctx; + int ret; + + ret =3D vfu_setup_device_nr_irqs(vfu_ctx, VFU_DEV_INTX_IRQ, 1); + if (ret < 0) { + return ret; + } + + if (msix_nr_vectors_allocated(pci_dev)) { + ret =3D vfu_setup_device_nr_irqs(vfu_ctx, VFU_DEV_MSIX_IRQ, + msix_nr_vectors_allocated(pci_dev)); + } else if (msi_nr_vectors_allocated(pci_dev)) { + ret =3D vfu_setup_device_nr_irqs(vfu_ctx, VFU_DEV_MSI_IRQ, + msi_nr_vectors_allocated(pci_dev)); + } + + if (ret < 0) { + return ret; + } + + vfu_object_setup_msi_cbs(o); + + pci_dev->irq_opaque =3D vfu_ctx; + + return 0; +} + +void vfu_object_set_bus_irq(PCIBus *pci_bus) +{ + pci_bus_irqs(pci_bus, vfu_object_set_irq, vfu_object_map_irq, pci_bus,= 1); +} + /* * TYPE_VFU_OBJECT depends on the availability of the 'socket' and 'device' * properties. It also depends on devices instantiated in QEMU. These @@ -632,6 +744,13 @@ static void vfu_object_init_ctx(VfuObject *o, Error **= errp) =20 vfu_object_register_bars(o->vfu_ctx, o->pci_dev); =20 + ret =3D vfu_object_setup_irqs(o, o->pci_dev); + if (ret < 0) { + error_setg(errp, "vfu: Failed to setup interrupts for %s", + o->device); + goto fail; + } + ret =3D vfu_realize_ctx(o->vfu_ctx); if (ret < 0) { error_setg(errp, "vfu: Failed to realize device %s- %s", @@ -657,6 +776,8 @@ fail: o->unplug_blocker =3D NULL; } if (o->pci_dev) { + vfu_object_restore_msi_cbs(o); + o->pci_dev->irq_opaque =3D NULL; object_unref(OBJECT(o->pci_dev)); o->pci_dev =3D NULL; } @@ -716,6 +837,8 @@ static void vfu_object_finalize(Object *obj) } =20 if (o->pci_dev) { + vfu_object_restore_msi_cbs(o); + o->pci_dev->irq_opaque =3D NULL; object_unref(OBJECT(o->pci_dev)); o->pci_dev =3D NULL; } diff --git a/stubs/vfio-user-obj.c b/stubs/vfio-user-obj.c new file mode 100644 index 0000000000..79100d768e --- /dev/null +++ b/stubs/vfio-user-obj.c @@ -0,0 +1,6 @@ +#include "qemu/osdep.h" +#include "hw/remote/vfio-user-obj.h" + +void vfu_object_set_bus_irq(PCIBus *pci_bus) +{ +} diff --git a/MAINTAINERS b/MAINTAINERS index 9d8695b68d..844ed75834 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3604,6 +3604,7 @@ F: hw/remote/iohub.c F: include/hw/remote/iohub.h F: subprojects/libvfio-user F: hw/remote/vfio-user-obj.c +F: include/hw/remote/vfio-user-obj.h F: hw/remote/iommu.c F: include/hw/remote/iommu.h =20 diff --git a/hw/remote/trace-events b/hw/remote/trace-events index 847d50d88f..c167b3c7a5 100644 --- a/hw/remote/trace-events +++ b/hw/remote/trace-events @@ -12,3 +12,4 @@ vfu_dma_unregister(uint64_t gpa) "vfu: unregistering GPA = 0x%"PRIx64"" vfu_bar_register(int i, uint64_t addr, uint64_t size) "vfu: BAR %d: addr 0= x%"PRIx64" size 0x%"PRIx64"" vfu_bar_rw_enter(const char *op, uint64_t addr) "vfu: %s request for BAR a= ddress 0x%"PRIx64"" vfu_bar_rw_exit(const char *op, uint64_t addr) "vfu: Finished %s of BAR ad= dress 0x%"PRIx64"" +vfu_interrupt(int pirq) "vfu: sending interrupt to device - PIRQ %d" diff --git a/stubs/meson.build b/stubs/meson.build index 6f80fec761..d8f3fd5c44 100644 --- a/stubs/meson.build +++ b/stubs/meson.build @@ -60,3 +60,4 @@ if have_system else stub_ss.add(files('qdev.c')) endif +stub_ss.add(when: 'CONFIG_VFIO_USER_SERVER', if_false: files('vfio-user-ob= j.c')) --=20 2.20.1 From nobody Sat May 4 08:13:37 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1653407227; cv=pass; d=zohomail.com; s=zohoarc; b=dtM4dyEFpCdl/+dkEHKv1TkEjgG5B1GjcMvDLbxXri7HKwSiXD9zQgprtvC2uJ0N6tn9UQmZoRKmXeRq3mcVJZ2us0lCppxXcuY/FIWL9cG9FuTogTG/idH4CBJ9hTsH8nA5OOjH55cpdAkPx5M54aNEv6maVUxW9We9bkyehvY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653407227; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=TvzdtBJDcjTurNjzEr+mWbyhTwdThGjpTnc2Gd+SlLg=; b=K+qFs4ryNzAo0styKhnFp+ssuxqo2cwg2Y97shDgIBz17ic88uePQUgJswuzOoH1Z8wWHXevnf+X9f0/4gh5zT60tXFBKii4xy6jQoFog6uubzVzhR73t6tDfLLNTwgtqzBYKgp8RGyiTQO+xQQc1f15Il8MWscq3IapqCCeeZg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1653407227600201.57738654423486; Tue, 24 May 2022 08:47:07 -0700 (PDT) Received: from localhost ([::1]:50530 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntWkU-0001pl-Ek for importer2@patchew.org; Tue, 24 May 2022 11:47:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40050) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWVP-0008JQ-NN for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:36 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:5450) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntWVM-0003ZP-GE for qemu-devel@nongnu.org; Tue, 24 May 2022 11:31:31 -0400 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24OFK8Mh018480; Tue, 24 May 2022 15:31:26 GMT Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g6qps6tkg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:25 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24OFSIb5025577; Tue, 24 May 2022 15:31:25 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam08lp2046.outbound.protection.outlook.com [104.47.73.46]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3g6ph8drft-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 24 May 2022 15:31:25 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) by MN2PR10MB3117.namprd10.prod.outlook.com (2603:10b6:208:12f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Tue, 24 May 2022 15:31:23 +0000 Received: from MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191]) by MN2PR10MB4013.namprd10.prod.outlook.com ([fe80::e9cb:e1ca:8189:f191%7]) with mapi id 15.20.5273.023; Tue, 24 May 2022 15:31:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=TvzdtBJDcjTurNjzEr+mWbyhTwdThGjpTnc2Gd+SlLg=; b=OdIglgS91t8t2hn8s3uyS3omtlYTMWg638oJ7t3rxavTvhtDu8cGaDTz+7jcJtnxNRIb ZphmLeZKguePZQmWBrS9t6paJ4kcC3NyQwpGwqIKexRYGL7QDuEio9TRImYcZx5Fo46C lzQfbADkxDuJVMQQQbfMJCgXm+v+QMlE1S3zkyrcWaXf+66sd2VoDP713idjqi22wtdf E6J86HA5YTzXh9IN9mHTr5vcqEEnmAmxNe7C5dXpwaId3SBz6Ti5oehQSG6ngWCA9/Xt 7f+SijwpPcC57DHyxktQ6sQrWth9/bJaWAfkpu8ZB8/UW1JvYfEflnMiFi49ZTTTAWKa wA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ip/g5vNRwjYUDecvHzjRbxsqxekovxNS4x2tnc+qm0NsaGTVmLHSW8wEGWxKZAX/fKshv5uS9Rkm4HpaeBgjEbtrVvpQOg6eYlLx/P5HqhVjGhHpiqw96/cdXiYDdW1RielRxgGjdB7OPxNQwAT1NfgWi0pZEguhYoraPO8IruTt34pYPq5sprj1DlV1aPt6lGybA4U9CK2iF0pEPm20QIqKBgHJ8C+hCLV4Pll2jc4m32FvGEvmAUQPn+GbDPYZzlcg/zZqO4yUMdzcjvVBoKcZW/SY5syq1KrmK9e+IOYFk8jk2QWQh6b7bHompwzpkdiGVMi1CHzzN8MBUJahDw== 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=TvzdtBJDcjTurNjzEr+mWbyhTwdThGjpTnc2Gd+SlLg=; b=hZFLIod2IIIeJ9pCP5EY4rDvyTcG++j1wf54ynC3sSTtZ7VmgQMDBdTE5JvonXX7+mdfCQRO1GgPe9sZX7uQpQBwMSYGh5/frd6ahhUZfzgAvxkgqj7ZmEY1GS+MGyN1qhcvtx6rzq4c3m4IYHMS2KKheTR6n1V2YIbVjKPyHksjOhpDJVcqmjECsbIEdW03O6jttjlzMdhjHa3GuvuVEaZH62o/JM9J+zWFk247m2Bb8OSRMWJrhlWY3Izc0hp1NoyRa5uNhrl0tC0DmFmGLkLbXZfn3pBHu3B3WWK9cySz+rAE/dlOzwYXPzw1keF7Z7Ba9dQTSGKCfHyE+CzkFg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TvzdtBJDcjTurNjzEr+mWbyhTwdThGjpTnc2Gd+SlLg=; b=PLbEqo2kdknXzc/TJQvwvS8cy0Rh/L0Olcwb44TXJ82XMgMcu764E3EV1Nv8a75yIgeapRo7cN2oIdAfyyigDEVtS7hdzwps7ECnWE1Gb9pCL5WuL5vxrEEVnq7DF3IwfGcezwOlQ3yE2IrHtbzgVX0aNgmJrd4+0B/+ieQtiJQ= From: Jagannathan Raman To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, mst@redhat.com, f4bug@amsat.org, pbonzini@redhat.com, marcandre.lureau@redhat.com, thuth@redhat.com, bleal@redhat.com, berrange@redhat.com, peter.maydell@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, eblake@redhat.com, armbru@redhat.com, quintela@redhat.com, dgilbert@redhat.com, imammedo@redhat.com, peterx@redhat.com, john.levon@nutanix.com, thanos.makatos@nutanix.com, elena.ufimtseva@oracle.com, john.g.johnson@oracle.com, kanth.ghatraju@oracle.com, jag.raman@oracle.com Subject: [PATCH v10 14/14] vfio-user: handle reset of remote device Date: Tue, 24 May 2022 11:30:33 -0400 Message-Id: <3f087d0e6eb70ca0ae2454b9f219b1c532290d1d.1653404595.git.jag.raman@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:806:25::17) To MN2PR10MB4013.namprd10.prod.outlook.com (2603:10b6:208:185::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a20a1d08-e587-4850-75a6-08da3d9a7512 X-MS-TrafficTypeDiagnostic: MN2PR10MB3117: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: jIlgoCFLc6E5pLBdyOomalqvIhVgHNR0TuI376p/RpZuI5baYb+lRPdSz7Sz93zUFnRCA9D3XTyHXnjWN0ZXALB6sbHWMB8w4gLxTeGFHCw3VQtwewwolgvlbVH/x5WRAWYGsNoym9ws5WYUWwBnlfMBrCWxDMDKgvKO9xXVgCF1IioZE2cq27PcXKZ4bgPsvUxQ/ZcQksZHMkLPhnjB+XXn12w/+5g1rbYwydlHNoCOMrsFjeGntgV+hwFIUVlQSy/TT1zPtkZc6VbRC3LOPTNx3S21ejugHLQqdLpqmK4BPW+VBQC2ivxsKKnxbngx+OkppBAiqD7amDauZU0grjUFsVRvHc1G9VOILmPLRg6dFliW8cM2GHzH11nczVGgWOyD/QfCh49kQxvsUYlR/Q6TgDsY2k8Imve/NbMIw9kuVMPcW+nP6qROoP5fyipfpyyUHTRmLO8/8BVpiyx4mqwJt7ijPMtzwyeINUi+sBY42WMCgN1bZtkLJaoRs/LMb0R2UmJ4VfG7HUgfZwHtcFMBSqna8kLC2T3Num63Zw7zs8DYtjSpYoQ6VmLffP2qVJ+ZsyRtTUCrkFl0LPQxZ3vMjSSs6oDSTfaYxJnsLjrZ8rIRbuEGb1T6yUSO0KvMHnoE014cgumKE+cVydpBUpQTjOGyis+uNRauNR67sJmlpvoqfH0jWejJuOFlzMqeURyNVoq33nIR8iAv6EoCjQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4013.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(66556008)(38350700002)(5660300002)(38100700002)(7416002)(86362001)(508600001)(36756003)(4326008)(66946007)(2616005)(6486002)(186003)(6666004)(66476007)(107886003)(8676002)(6506007)(26005)(52116002)(316002)(6916009)(8936002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VrPZOxNKZ0epay+3xkDECrSjhhpJGbEvLNqVPGC6Cj1/b0NM0+AVqz6VN9g0?= =?us-ascii?Q?DrSYI5XJ6qSmYmviFDpb8ezgvjh4+r47nJ25u8AIEyZAUgqdYr6zO+RPu3C3?= =?us-ascii?Q?9xrJlqx9pJ2XI7jFNDt0Q26hn+Lhr4/DAtc94nIcqWV742VOxVkGwNmcI6dR?= =?us-ascii?Q?aW1YTMmMGfE4805LmbHTBnneSz6T+zhdlM8yQZzuixTu6GPvgFbqnqwXCI9F?= =?us-ascii?Q?i29OxXix6H7p8xecqHgcfJjQnyMh/TbBGaYg7vKjk5TgDSiH83YQyAV+eHvj?= =?us-ascii?Q?sEJY597SgJ2/kDpoVn7cF+hymDCovCzpSNUc3+MOwlj3Vu5tP4EcSkK92Zgi?= =?us-ascii?Q?U3d3tUSeKOZBaAe80AqkZvSESI44gbNLu/oQDiducat+PZW2RGn3HOLgHCLX?= =?us-ascii?Q?bmWSPZW0KtBCzajVEZa+mhmtxUWcjxP+4FgFuJ473Y4COEhm/rqMT0ixdQIe?= =?us-ascii?Q?K+coitoRdAxY3sXucVhz/9Ha71rSZ5dYz4IiRdMhcMRwqeuZ+FNJN3KQGOb+?= =?us-ascii?Q?HhSe76xL3bshnC9M0DJ//pw4NeiSnabDO34jcwlIKg74+aoCtSPdO8g+eI02?= =?us-ascii?Q?c5+rLq35OQDdlzaUbQcQoCh/1b/CeJ+zNue58j30Kcv+cptohpzX2uV23edR?= =?us-ascii?Q?6Ii5cUSFRWV0LbDKnpJhSHdZOBvPAoQS5n3tcIqGpfZkID7ofqXicwOPwZhF?= =?us-ascii?Q?MwMAVXY83Dj/NAPXjGGPVLa+6td8SVMXP2ppqWnntPGBmuOcc+p4hqbGlnni?= =?us-ascii?Q?H1p0k7SvKgKIZtSWL0G41GDWBS4qsq9ta+YtukxMuRbpm9/qajLwdMHCjmb3?= =?us-ascii?Q?mM58z+l5tCtrTUzS73dbs3O5pHSCaVRvzmdJ9H9LAzvXF4Ye9NPfLAYhmKMT?= =?us-ascii?Q?MSY3Cpk05zvTB/LBVolvE8kuUFNdTmwA/1J5bxAPONap2vONXcCCL8L47NGU?= =?us-ascii?Q?GiCJ6ZEAXPPN/c3lsRGtBGBoNmoUHtI7AWvLigsaOnTTt/Piu4DnE/UfDzBi?= =?us-ascii?Q?tRr56tCe/ybxYOlNyiAGDzGFKyhzFcD71/JcJopiry4fzeLCEs3kHYsJS9Ij?= =?us-ascii?Q?1GeZdgEye2h+A9gAAc0IaryZjpkG1fgux+qsM127qt6nCIDshxO3VHyAtMjF?= =?us-ascii?Q?jDAEd0q/0VhB2XPedoZy1Cws+Fdc7rXO3AaNtZ2fS2lEzpWCTm4t9M7I2WRE?= =?us-ascii?Q?Gka3hvlCjnxvHlsJ1zVbtK4xWUVlziaYYoI7KjjwB0edkprz15PLayYoIEqA?= =?us-ascii?Q?FHeGtZFa7ev63EsPEN5XRKjw/dwjL07GT77dCrVYTB1hgsGnKz8m2oOrVdCM?= =?us-ascii?Q?H+sbHPRZv5Gxc8JIU1iyEhtP6K8kiZWOMcyTXsNwDgeBWWJwp4EX47VArF6N?= =?us-ascii?Q?je+uoVNCR6grBY/AJhNcUEuBIsNfrOvE5Cz7X+FawX6hdQgkyjaCD2pzwDH0?= =?us-ascii?Q?l0HQQhvfhHL78OBSi3c/V+5TxvrFxMAzs7Xlj2bMpXUZxrFVYY2kYYDzPcJS?= =?us-ascii?Q?fPg4x4OPR0gZ1deCjqx3YM3iLlb5ulE7Ovl6l6t2fFiqC7TJLw1EI8E4TwKg?= =?us-ascii?Q?8ZCHu4lGF1V+lUyGh1rXa5JMd5giJO6iWCU1nPckW0iQrsEemahYJQqiaA0/?= =?us-ascii?Q?pH8FSlssgquWPxzvteAiQVzC99E8FGOFLzbraJbcU78++ZXUPpdfEEjj11hS?= =?us-ascii?Q?sklVjwSnQlUGBn8X08VEUfZmDvE4V6x3Ja1gbtgBCp3AxCGtqrFsHj1bW+I1?= =?us-ascii?Q?N7J00N5wcQ=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a20a1d08-e587-4850-75a6-08da3d9a7512 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4013.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2022 15:31:23.1622 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: idehzOtJ/nu8BceAFvKUx9Ooc2b0ytNlxkKdDXATP0oKFtLbYe9LBQhJFrbZFq5oEb500V6dFuSwv+Uvi6KgWw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3117 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-24_05:2022-05-23, 2022-05-24 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 malwarescore=0 spamscore=0 suspectscore=0 bulkscore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205240079 X-Proofpoint-ORIG-GUID: eMDWUexXzDI5S3kFOyiA5GO4-Aza3CyM X-Proofpoint-GUID: eMDWUexXzDI5S3kFOyiA5GO4-Aza3CyM Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.177.32; envelope-from=jag.raman@oracle.com; helo=mx0b-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1653407228289100001 Content-Type: text/plain; charset="utf-8" Adds handler to reset a remote device Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman Reviewed-by: Stefan Hajnoczi --- hw/remote/vfio-user-obj.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c index eeb165a805..c0c2277bfc 100644 --- a/hw/remote/vfio-user-obj.c +++ b/hw/remote/vfio-user-obj.c @@ -632,6 +632,20 @@ void vfu_object_set_bus_irq(PCIBus *pci_bus) pci_bus_irqs(pci_bus, vfu_object_set_irq, vfu_object_map_irq, pci_bus,= 1); } =20 +static int vfu_object_device_reset(vfu_ctx_t *vfu_ctx, vfu_reset_type_t ty= pe) +{ + VfuObject *o =3D vfu_get_private(vfu_ctx); + + /* vfu_object_ctx_run() handles lost connection */ + if (type =3D=3D VFU_RESET_LOST_CONN) { + return 0; + } + + qdev_reset_all(DEVICE(o->pci_dev)); + + return 0; +} + /* * TYPE_VFU_OBJECT depends on the availability of the 'socket' and 'device' * properties. It also depends on devices instantiated in QEMU. These @@ -751,6 +765,12 @@ static void vfu_object_init_ctx(VfuObject *o, Error **= errp) goto fail; } =20 + ret =3D vfu_setup_device_reset_cb(o->vfu_ctx, &vfu_object_device_reset= ); + if (ret < 0) { + error_setg(errp, "vfu: Failed to setup reset callback"); + goto fail; + } + ret =3D vfu_realize_ctx(o->vfu_ctx); if (ret < 0) { error_setg(errp, "vfu: Failed to realize device %s- %s", --=20 2.20.1