From nobody Mon Feb 9 01:17:41 2026 Delivered-To: importer@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+importer=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=1636419270; cv=pass; d=zohomail.com; s=zohoarc; b=PkZtbEP3WKLgBzTL9oiQ3uspSJA4xhhpYebgzjyAzUPAScIqjtCiSUVjS3aKmmr6KfB/as0CPWJyzDtIr6TxwTj4y7TmygDsYMjqhN+qGwIktEv0TNehc9jkyeWmvlaPnV8J2mEiIOe6RZlOfDYKdsb5tlBQhR0pHvua1Ln8bOc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1636419270; h=Content-Type: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=YBaA2VeIu4CgbO7yOsCjXGViD8KNexdoMr5cVFzIqy4=; b=nM2jMPWjAdlk6Up4Pt/yc+wEEPCgarkXLrG2AqAjkbSRbAD+joxIu7mVFzv4jctpe6mikJJM1BzA/RCz56k4ccM63cUm1KrBkthuh567L5x4iEw+GI4Z/RWSzM5MRJVPtoDiIZfacaHTgR1MhpdlghZir2udJ8vBDaam8o0b6N8= 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+importer=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 1636419270140342.8912057359438; Mon, 8 Nov 2021 16:54:30 -0800 (PST) Received: from localhost ([::1]:43758 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mkFPA-0000lC-Kd for importer@patchew.org; Mon, 08 Nov 2021 19:54:28 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51604) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mkFAc-0005es-HU for qemu-devel@nongnu.org; Mon, 08 Nov 2021 19:39:27 -0500 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:40300) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mkFAX-00046W-0Q for qemu-devel@nongnu.org; Mon, 08 Nov 2021 19:39:23 -0500 Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 1A901USR001194 for ; Tue, 9 Nov 2021 00:39:18 GMT Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by mx0b-00069f02.pphosted.com with ESMTP id 3c6uh4fnp0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 09 Nov 2021 00:39:17 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 1A90ZLN2129193 for ; Tue, 9 Nov 2021 00:39:16 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2104.outbound.protection.outlook.com [104.47.70.104]) by userp3030.oracle.com with ESMTP id 3c5etuvb6n-5 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 09 Nov 2021 00:39:16 +0000 Received: from SJ0PR10MB4686.namprd10.prod.outlook.com (2603:10b6:a03:2d7::23) by BY5PR10MB4068.namprd10.prod.outlook.com (2603:10b6:a03:1b2::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.11; Tue, 9 Nov 2021 00:39:12 +0000 Received: from SJ0PR10MB4686.namprd10.prod.outlook.com ([fe80::1551:92ba:9eb8:a093]) by SJ0PR10MB4686.namprd10.prod.outlook.com ([fe80::1551:92ba:9eb8:a093%7]) with mapi id 15.20.4669.016; Tue, 9 Nov 2021 00:39:12 +0000 Received: from bruckner.us.oracle.com (73.71.20.66) by SJ0PR03CA0194.namprd03.prod.outlook.com (2603:10b6:a03:2ef::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.11 via Frontend Transport; Tue, 9 Nov 2021 00:39:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-type : mime-version; s=corp-2021-07-09; bh=YBaA2VeIu4CgbO7yOsCjXGViD8KNexdoMr5cVFzIqy4=; b=WMoEPA0m5y/zSOAmkOXMs1OgFeUYFXRSa1HHdgWM5npNRIeI/q9Dg+u448/rKHo5W0MC oKJMem3spwee+tZKtOq+QC+b05qK21BzLgXtkvgxety+WbPGSslCGnELZOoyPXA1PMjh QV/kxhQGyEPupW4i0Hk9pWe9dvWQNuS28CEajvCkFx3BKN09TzX2dlpEwAWEcPjk8acQ xwAOiXPmzSr4E/5de+V7vZ/zd8v71CLPQmhimXZQQPZ/OvvOVcfoDxboYUSJr5iTujD5 XNUzapxuWLcK7RTnXpaJaS411MVuAkXqAQ1VULe7LbNanmIFj/6V/O5lXa17CkPjzago gA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BRw4pClL1DyNb4FBttJ5dxhSNrYRzjIO1gHP3ljmXRxmretks3oiFzUzaeC1okp+xr48ahYwITG1PritlwoJT77y4pBgQ4X1uCMtBVHsn3vkRdTOHwNhfylhbisqRrM6r9ho42fXWNOH7UOTNP5EHjUfJCEYcGoTvhtgw23YRH7xE1f5DAY2HQCyg9WlFq2Jk5FmehRrmhYsl0K5nYiVZWb2DrQsY5LHZQx8vmTWQ38SpFpIB9vCxZuMkawsOXcnBna3YjsilQfHedWEM3wff+wUorU/nWlDImBBlLyncOZbF9Fud0ervrig+c5pI4+2rwI7PhCT5jv0nyXCCh8PLg== 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=YBaA2VeIu4CgbO7yOsCjXGViD8KNexdoMr5cVFzIqy4=; b=oObzeBKA6GW947yL3DXSymQSm9TvJUtOVdWWR6DiIzKajIR/XZCZJ/PxED/lvuFLuBMd/XX2ZrtVsOy+PNiK/b+9LZBjAPn4cB+dCs98S8hiD9rD2gO6whRhy6KL/98UuR2hZm1A2cvEwd/g16NrJF0f+l4VcgfQ3UBApXY1FanWuMi5nEDAy0VkAZB7fjTaDjPa8+Jj2T+jhzMLEFlDWypVEVyx8xPIqoTkYfZTlOxEgiUIiShAVoCdP+Z4CT/FtRdxiW+zZpOvlFoH3tNpDdsu7Xh+CCqv3vTWs0tY9pWW9zc7hQ+anUTid4BZ4GDizoIQy99ihXuxOH3tEWShZw== 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=YBaA2VeIu4CgbO7yOsCjXGViD8KNexdoMr5cVFzIqy4=; b=vGwMNbIvkjOOdrji0/jWDvgL/bZffE0+OW2zIulUoD9/cvTDpv1QHGHLf/NWmBLCw8hr5AHOVU+rWM+Xgbra3rngzF3b3AZiTsfCG69nsRteZwVgfT+S41ovLGgCpgvM7GAvAEpYH8wTUwWhXEiWVetqn0FVL8x/dFb+qxhDpwc= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=oracle.com; From: John Johnson To: qemu-devel@nongnu.org Subject: [RFC v3 06/19] vfio-user: Define type vfio_user_pci_dev_info Date: Mon, 8 Nov 2021 16:46:34 -0800 Message-Id: <28d95a317e70c418dc054a59db307d9c49411ca6.1636057885.git.john.g.johnson@oracle.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: References: X-ClientProxiedBy: SJ0PR03CA0194.namprd03.prod.outlook.com (2603:10b6:a03:2ef::19) To SJ0PR10MB4686.namprd10.prod.outlook.com (2603:10b6:a03:2d7::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6f96f138-533e-4bbe-37c0-08d9a3195949 X-MS-TrafficTypeDiagnostic: BY5PR10MB4068: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1850; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: p5hDSFrHo/echZQraZ5Rs8UtD/R/lsCA5OQmLEYKkfKoYn2gsQb75OPj35ApeuvxNov4y35DI7ATZ/2k47lbF97tNqAiH4GD0fi7OE8+YCqoJ2Ew+GOqIWuNKcIn3uhtCLzS8gzNYhOuHOINBcLKnE4gsXjab8AHXm0LfowTt5BzNI4yn4knN/ilBvpyWl28UYB6IsXsaWdunTAGQrJoGj4g+DXNzXFvThStv5G9J1ZPOvU5XtvN913NGJ5OE9QQKM3wPbbNPjsMY6AGt5EAqL7JwN+q0NGjrOU5Ee7hc1ZvHD3fU8b5EjPXmauQya4HNMUk8TrlcHTOU6Av3lZLG8nvMLu94yyk0PXkE7RGdpJFet+dN/1BKdeAfUAjb7+TInKMTromTqkwNqcevwUFzLtrkt4GERYk2mmUgoRyDVd3bDbpSQUs0iSgEQ8teC042fuLP99ns7Kh7gpT3JUVMoA09UiJtaJFop+jEW9TuRSNmo0uPQSf0lUcovRRKFmgA8SgCttra/MlTvdr4tRzbc/nszwpiAtYNTSJFdSMZTHGrWaRguyV2Qakle6v01TFZUMfd2rTiVGDpyV8c4BQ7mvizxa4LqhhQ8XgT2IqwITtwImMbepX+YtoU7Gox3ovV3UXHa1/gzwdUnRqy1neEj4Oe+pU6ZdttGTZ8hpU/FFs7hET2leBUB+CnEhSKq3hCUY2wLPdyJOnsguwtiP3Pg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR10MB4686.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(66476007)(316002)(186003)(66556008)(508600001)(8936002)(8676002)(66946007)(6486002)(26005)(2906002)(6916009)(5660300002)(36756003)(7696005)(52116002)(86362001)(83380400001)(956004)(38100700002)(6666004)(2616005)(38350700002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?C1gSWvzFiXJ/68yv8APf7SDVhfcxqmSQi+XonaMQYLAtPUoNu2+fUXpIdxIT?= =?us-ascii?Q?upg/t37sZtd+j2Ey+vsto0uDnzT6XmYE5ha9LOMcpbrR+XwmniqzAdM++Cna?= =?us-ascii?Q?7LY01t2FfFPCaY+MnJuyVWsjB/ysky+7/2a2D9X3KYY6HPMP+DAjmHbR9+y+?= =?us-ascii?Q?FzzTwd+nUPuI0wQ/hGYeejoAiGWBxWzsFPVjOD/gOnbjML554XmhnYlcNG4+?= =?us-ascii?Q?3wtpvSKM+2YCbhPskPIUWXyv2p11qQOmjWdbk3M3bqLoDoECy5YWObetnMjW?= =?us-ascii?Q?kOQli2mW0L1irc/SBpBEi9lzd6Z8sZ3sBSFSODUSrY5SUYD07in7oCRO7y4N?= =?us-ascii?Q?DPmv5tDaKVUhIqHYbEcewNIc91aop7MriYfGrz2hn0jqQomLpYOfjI+Rg/K5?= =?us-ascii?Q?iH5dOT/pkveZjkDmzAEABr25gaZ7Uik8mFUMMwvNyKHLY6ZLb+6AUy8W8eTN?= =?us-ascii?Q?Xw37Uo69eRuS+sIzbgJelrCSrrXG9OtDUhRHiYtD8CoMNKslPf3YO+/acEKw?= =?us-ascii?Q?tnhH38DvZDxnHn0bSiwCzMMzWxxYveHHEqUggoVog9ZgPUpQrjrbSkEfQBKm?= =?us-ascii?Q?ssP9hd6P4/m6wxpASF7nL81PQheF5rEks3QVf12R9qY41wVNnLOsXyu/WMet?= =?us-ascii?Q?nO7Kg7moggBU9HeP3ACvuoOZQ3Ew8352iJwcWZ/uV+cksb2Rpp4y00IH40cz?= =?us-ascii?Q?dze8/JL6xb2v+2UrDeGB3z61sT9HliungA0QCnQknJoVNPliyjrAAt46epaA?= =?us-ascii?Q?UG/L42wWyfnIeTqjZafHHXKKOm3GpZ7UdhMtvNGQuGa5bqItFY4/oI5poRIG?= =?us-ascii?Q?BB6JSyc6FEyMiPqajhbC6V9qecDkXu+UsKdNOdOFgcTV9PbU/AkyaY09U+I7?= =?us-ascii?Q?LzkeRgaghecbzJzDEudJuPfx6rlYMraOKXhJ1M0jh3nSqpXBtlfm87WD+f0O?= =?us-ascii?Q?Gd26JWBCwnVDNw3FQO0yR59ziwPhC1JTBRipL0Z9QCSaTyoa5sd6jp7WZlUJ?= =?us-ascii?Q?HjC4qXQPRX48QdbKhH3mwrg815jDM/A2U/AhmMoObFGEVW8qATwBwmF1dvd1?= =?us-ascii?Q?7vJXdZw8Aed3GFad4REkFXwIWVBoN2HPGnwrhofJwPBITjQRe1t6i9a4rEtd?= =?us-ascii?Q?OjJ/dU82SytBpOwodi4Z8LTdUqoeAd16wBzaXZfl/yAI+fylbCmwIu5IosuW?= =?us-ascii?Q?NgB3+fvTMrDrUyuiyEhTkXXDnLM3NrhwoWZ63X3hv5S9WkEkeiEa23v6TIuJ?= =?us-ascii?Q?T+jEAyTGvT2yGlTOXemddP2bfE9kwSHsHsrqIVd4UL25v4x8be6XxcnEMqwR?= =?us-ascii?Q?+gDsUnduh0bEyhZmYkbx2sPnpOwrjjiezmz6KRFAYL+22vK2sQCnhpQPv/P+?= =?us-ascii?Q?Rn9gM1Arx5XAugAy+jRzWYBWiNTULQjKei0IQDMSbxHQf/tHoMebcLW5Zg7A?= =?us-ascii?Q?BpT196PjDF4whv5qCYirQZzG4WE41sO+Rhr5qEHYzCyNUJg7u0zm+Zp0uR20?= =?us-ascii?Q?yDqIDoTjNOs+pSvC7Yg2jh9MeLJYY4wlZ0QAwaSJ6YldWRUWSqV8dZha23U6?= =?us-ascii?Q?o2QQZwZYhSF2qzeOHmpLr5PJuda8wYz1KSxuqodVp2hMg3xLRTL74AEGvVt+?= =?us-ascii?Q?HlALBOabJnsGH19s7QXR97R8WEVhvydeLR9KaYbUec7WVUt2Ac61UyeIJyDt?= =?us-ascii?Q?nN2dbQ=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6f96f138-533e-4bbe-37c0-08d9a3195949 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR10MB4686.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2021 00:39:11.8161 (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: prxnfs/1NzQ9rPiRDcNgcCXC0Wnc+FTLsqCpocQqhbvFnw6WuAqGTAeH+oCZu5yIbMgxNoyux1sro/drS9R3E09wEWg+tWP0KXIjutruxwY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR10MB4068 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10162 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 adultscore=0 mlxlogscore=999 malwarescore=0 phishscore=0 mlxscore=0 suspectscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2111090001 X-Proofpoint-ORIG-GUID: mTMV4-pe7WtYv2wmsmOMAAwfbFZffKKf X-Proofpoint-GUID: mTMV4-pe7WtYv2wmsmOMAAwfbFZffKKf 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.177.32; envelope-from=john.g.johnson@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, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1636419271452100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" New class for vfio-user with its class and instance constructors and destructors, and its pci ops. Signed-off-by: Elena Ufimtseva Signed-off-by: John G Johnson Signed-off-by: Jagannathan Raman --- hw/vfio/pci.h | 9 ++++++ hw/vfio/pci.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++= ++++ hw/vfio/Kconfig | 10 ++++++ 3 files changed, 116 insertions(+) diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h index bbc78aa..08ac647 100644 --- a/hw/vfio/pci.h +++ b/hw/vfio/pci.h @@ -187,6 +187,15 @@ struct VFIOKernPCIDevice { VFIOPCIDevice device; }; =20 +#define TYPE_VFIO_USER_PCI "vfio-user-pci" +OBJECT_DECLARE_SIMPLE_TYPE(VFIOUserPCIDevice, VFIO_USER_PCI) + +struct VFIOUserPCIDevice { + VFIOPCIDevice device; + char *sock_name; + bool secure_dma; /* disable shared mem for DMA */ +}; + /* Use uin32_t for vendor & device so PCI_ANY_ID expands and cannot match = hw */ static inline bool vfio_pci_is(VFIOPCIDevice *vdev, uint32_t vendor, uint3= 2_t device) { diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 6e2ce35..fa3e028 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -19,6 +19,7 @@ */ =20 #include "qemu/osdep.h" +#include CONFIG_DEVICES #include #include =20 @@ -3438,3 +3439,99 @@ struct VFIOValidOps vfio_pci_valid_ops =3D { .validate_get_region_info =3D vfio_pci_valid_region_info, .validate_get_irq_info =3D vfio_pci_valid_irq_info, }; + + +#ifdef CONFIG_VFIO_USER_PCI + +/* + * vfio-user routines. + */ + +/* + * Emulated devices don't use host hot reset + */ +static int vfio_user_pci_no_reset(VFIODevice *vbasedev) +{ + error_printf("vfio-user - no hot reset\n"); + return 0; +} + +static void vfio_user_pci_not_needed(VFIODevice *vbasedev) +{ + vbasedev->needs_reset =3D false; +} + +static VFIODeviceOps vfio_user_pci_ops =3D { + .vfio_compute_needs_reset =3D vfio_user_pci_not_needed, + .vfio_hot_reset_multi =3D vfio_user_pci_no_reset, + .vfio_eoi =3D vfio_intx_eoi, + .vfio_get_object =3D vfio_pci_get_object, + .vfio_save_config =3D vfio_pci_save_config, + .vfio_load_config =3D vfio_pci_load_config, +}; + +static void vfio_user_pci_realize(PCIDevice *pdev, Error **errp) +{ + ERRP_GUARD(); + VFIOUserPCIDevice *udev =3D VFIO_USER_PCI(pdev); + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(pdev); + VFIODevice *vbasedev =3D &vdev->vbasedev; + + /* + * TODO: make option parser understand SocketAddress + * and use that instead of having scalar options + * for each socket type. + */ + if (!udev->sock_name) { + error_setg(errp, "No socket specified"); + error_append_hint(errp, "Use -device vfio-user-pci,socket=3D= \n"); + return; + } + + vbasedev->name =3D g_strdup_printf("VFIO user <%s>", udev->sock_name); + vbasedev->dev =3D DEVICE(vdev); + vbasedev->fd =3D -1; + vbasedev->type =3D VFIO_DEVICE_TYPE_PCI; + vbasedev->no_mmap =3D false; + vbasedev->ops =3D &vfio_user_pci_ops; + vbasedev->valid_ops =3D &vfio_pci_valid_ops; + +} + +static void vfio_user_instance_finalize(Object *obj) +{ +} + +static Property vfio_user_pci_dev_properties[] =3D { + DEFINE_PROP_STRING("socket", VFIOUserPCIDevice, sock_name), + DEFINE_PROP_BOOL("secure-dma", VFIOUserPCIDevice, secure_dma, false), + DEFINE_PROP_END_OF_LIST(), +}; + +static void vfio_user_pci_dev_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + PCIDeviceClass *pdc =3D PCI_DEVICE_CLASS(klass); + + device_class_set_props(dc, vfio_user_pci_dev_properties); + dc->desc =3D "VFIO over socket PCI device assignment"; + pdc->realize =3D vfio_user_pci_realize; +} + +static const TypeInfo vfio_user_pci_dev_info =3D { + .name =3D TYPE_VFIO_USER_PCI, + .parent =3D TYPE_VFIO_PCI_BASE, + .instance_size =3D sizeof(VFIOUserPCIDevice), + .class_init =3D vfio_user_pci_dev_class_init, + .instance_init =3D vfio_instance_init, + .instance_finalize =3D vfio_user_instance_finalize, +}; + +static void register_vfio_user_dev_type(void) +{ + type_register_static(&vfio_user_pci_dev_info); +} + +type_init(register_vfio_user_dev_type) + +#endif /* VFIO_USER_PCI */ diff --git a/hw/vfio/Kconfig b/hw/vfio/Kconfig index 7cdba05..301894e 100644 --- a/hw/vfio/Kconfig +++ b/hw/vfio/Kconfig @@ -2,6 +2,10 @@ config VFIO bool depends on LINUX =20 +config VFIO_USER + bool + depends on VFIO + config VFIO_PCI bool default y @@ -9,6 +13,12 @@ config VFIO_PCI select EDID depends on LINUX && PCI =20 +config VFIO_USER_PCI + bool + default y + select VFIO_USER + depends on VFIO_PCI + config VFIO_CCW bool default y --=20 1.8.3.1