From patchwork Wed Sep 15 09:50:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Shameerali Kolothum Thodi X-Patchwork-Id: 512193 Delivered-To: patch@linaro.org Received: by 2002:a02:c816:0:0:0:0:0 with SMTP id p22csp6477jao; Wed, 15 Sep 2021 02:51:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwv2s2brf0vljvo3hBUPNIMmHvccoWK70kfNq1HGl6/9dwZGzuDxBrjn42H2mv+i61m1XCi X-Received: by 2002:a05:6e02:2148:: with SMTP id d8mr11657070ilv.305.1631699460716; Wed, 15 Sep 2021 02:51:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631699460; cv=none; d=google.com; s=arc-20160816; b=MicPBEykZR0ZQ7kZGeI+rjP3Cm1krbdoEvCiBzy1BTLtkHceIhFZ4+jq1HuUu9vSTO ukd1ft5rY1HjoVsa6OGPuAPcwbTVe7wTYwKXzBasZJj4tUAXOngNxOx7zzNUyr8qDNYZ kY5SBADQvN5NZCqrG8SwYHwQ7rCRtpIvbN8+z1U3BR3777nsDg+MabrMdi/fw9KdHaqV g32hE+yDqFOSWwN67oURG9J9pLa6HL+lRJd79suwY/GaNqWPiJCYQEvZNuQGrnpsQDbk QDEJ51bH9FBU/dUgUhuKVBGRYT7vMQEx3VJIZRbzgKaIEIHpTezcyddlVXxnCoNVdLkb boWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=fo1x+gYqLRk583zGjlMu91IrzJgnZvdHAKwJ/sf4wt8=; b=W9qJ/3mLsvUX3ghyUpiwz608moMOzcO7oMLkxu/EluNCyNLmXpj1PSf2RPboe5LUBS UnDKbPqWXUCCGw6vZEIDHiiRlUD8xQv/CUz5BsSeOWp54NPcx34oIVbmIo1eRtTuUDIJ NBbrpqOu4/2Fvp9V8Lha07iGUAXgzzFXu854jUSUIDL92ncXsjfv9roK2G1a7R5s1zye CoqV/1+YCBmjjKL24tWF++3L1LKkv26ycoAxuBz8000jAFIuk06aVlCLXcYmSpVs4KKA Lca1QhlQQ7MnwnssWrvLSybyKLi/XkRmHlwLRqLp5/vfSq4fBC6YcyICLbr/dlXGUsJv aj7g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f24si11913504jaa.118.2021.09.15.02.51.00; Wed, 15 Sep 2021 02:51:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232131AbhIOJwR (ORCPT + 3 others); Wed, 15 Sep 2021 05:52:17 -0400 Received: from frasgout.his.huawei.com ([185.176.79.56]:3814 "EHLO frasgout.his.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231860AbhIOJwR (ORCPT ); Wed, 15 Sep 2021 05:52:17 -0400 Received: from fraeml738-chm.china.huawei.com (unknown [172.18.147.207]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4H8b4w348nz67xvT; Wed, 15 Sep 2021 17:48:32 +0800 (CST) Received: from lhreml710-chm.china.huawei.com (10.201.108.61) by fraeml738-chm.china.huawei.com (10.206.15.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.8; Wed, 15 Sep 2021 11:50:56 +0200 Received: from A2006125610.china.huawei.com (10.47.83.177) by lhreml710-chm.china.huawei.com (10.201.108.61) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.8; Wed, 15 Sep 2021 10:50:50 +0100 From: Shameer Kolothum To: , , CC: , , , , , , , Subject: [PATCH v3 0/6] vfio/hisilicon: add acc live migration driver Date: Wed, 15 Sep 2021 10:50:31 +0100 Message-ID: <20210915095037.1149-1-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 MIME-Version: 1.0 X-Originating-IP: [10.47.83.177] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To lhreml710-chm.china.huawei.com (10.201.108.61) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Hi, Thanks to the introduction of vfio_pci_core subsystem framework[0], now it is possible to provide vendor specific functionality to vfio pci devices. This series attempts to add vfio live migration support for HiSilicon ACC VF devices based on the new framework. HiSilicon ACC VF device MMIO space includes both the functional register space and migration control register space. As discussed in RFCv1[1], this may create security issues as these regions get shared between the Guest driver and the migration driver. Based on the feedback, we tried to address those concerns in this version. This is now sanity tested on HiSilicon platforms that support these ACC devices. Thanks, Shameer [0] https://lore.kernel.org/kvm/20210826103912.128972-1-yishaih@nvidia.com/ [1] https://lore.kernel.org/lkml/20210415220137.GA1672608@nvidia.com/ Change History: RFC v2 --> v3 -Dropped RFC tag as the vfio_pci_core subsystem framework is now part of 5.15-rc1. -Added override methods for vfio_device_ops read/write/mmap calls to limit the access within the functional register space. -Patches 1 to 3 are code refactoring to move the common ACC QM definitions and header around. RFCv1 --> RFCv2  -Adds a new vendor-specific vfio_pci driver(hisi-acc-vfio-pci)   for HiSilicon ACC VF devices based on the new vfio-pci-core   framework proposal.  -Since HiSilicon ACC VF device MMIO space contains both the   functional register space and migration control register space,   override the vfio_device_ops ioctl method to report only the   functional space to VMs.  -For a successful migration, we still need access to VF dev   functional register space mainly to read the status registers.   But accessing these while the Guest vCPUs are running may leave a security hole. To avoid any potential security issues, we   map/unmap the MMIO regions on a need basis and is safe to do so.   (Please see hisi_acc_vf_ioremap/unmap() fns in patch #4).    -Dropped debugfs support for now.  -Uses common QM functions for mailbox access(patch #3). Longfang Liu (2): crypto: hisilicon/qm: Move few definitions to common header hisi_acc_vfio_pci: Add support for VFIO live migration Shameer Kolothum (4): crypto: hisilicon/qm: Move the QM header to include/linux hisi_acc_qm: Move PCI device IDs to common header hisi-acc-vfio-pci: add new vfio_pci driver for HiSilicon ACC devices hisi_acc_vfio_pci: Restrict access to VF dev BAR2 migration region drivers/crypto/hisilicon/hpre/hpre.h | 2 +- drivers/crypto/hisilicon/hpre/hpre_main.c | 12 +- drivers/crypto/hisilicon/qm.c | 34 +- drivers/crypto/hisilicon/sec2/sec.h | 2 +- drivers/crypto/hisilicon/sec2/sec_main.c | 2 - drivers/crypto/hisilicon/sgl.c | 2 +- drivers/crypto/hisilicon/zip/zip.h | 2 +- drivers/crypto/hisilicon/zip/zip_main.c | 11 +- drivers/vfio/pci/Kconfig | 13 + drivers/vfio/pci/Makefile | 3 + drivers/vfio/pci/hisi_acc_vfio_pci.c | 1217 +++++++++++++++++ drivers/vfio/pci/hisi_acc_vfio_pci.h | 117 ++ .../qm.h => include/linux/hisi_acc_qm.h | 45 + 13 files changed, 1414 insertions(+), 48 deletions(-) create mode 100644 drivers/vfio/pci/hisi_acc_vfio_pci.c create mode 100644 drivers/vfio/pci/hisi_acc_vfio_pci.h rename drivers/crypto/hisilicon/qm.h => include/linux/hisi_acc_qm.h (88%) -- 2.17.1