Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3478199pxk; Mon, 5 Oct 2020 10:39:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzs/oxUER0P+KfdqLpZfc68UjogmxOuCVJqsa1SN1m6J+6fYhEdsTT5hZQwQY3jic1D9yzx X-Received: by 2002:a17:906:1c50:: with SMTP id l16mr864611ejg.144.1601919546653; Mon, 05 Oct 2020 10:39:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601919546; cv=none; d=google.com; s=arc-20160816; b=Pgwb1YtOXArXvW71PQ6vSL+UQZA68qlu+w8pgYAs0MgX7MvY4XGMu+xItPcDKVKHgy DotBGftnsTRdznFqTzifgfiyMuI0awKVSqm2MnyOcItYlAdyy96Cr94K+JK6aNHVKXk5 4p4ufrtdJZgJ1AZhtlmvZZGOnFSIVZamdS1xS+fhAtFU7tO8hyc7CFUUQyAuJFu3wegb TpDppJ9VxRMyqP0Spo1hANaTBTqX5JIVPEP4PpSPAR0jEEO3KMaK0byCZmeRsPcsjGBl GiE7ffTkHE9+HYob3/1QCOw15TGPCdPSoq0xSvnWm+CY7qqp5hWW9CPk+Wf+dJsYZq+O gIig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=zqjBdV6N2d1lq60ZsY5YhxBZBsOUFyEPr+oDQbG02e0=; b=v1AQ8Kz6eZ9FyaMVfeBuDMtoAjO7iUt9fG93Ru6EECW/jaOPqwPVttpdnU1GL6xv1h 60MuBFGCrSuPkevHOTJpgkRGV90/hQm5q1LPmYjI2soxlngy1UZX0/WGSg07brIuVCEz 7Y9g85x29MZBUyR4ye163jOJg++V0Aq+hvUx4oz49sOtK2DNrzsXYX9oPpvEG32nVrlg 67hIWAdzb8BERAs8jold/kwHzJN2MX2HWHtAX3RwVaqtjYZBSF47UfHXXT/yhcWE3siJ MxpTZnCxvfBeTQSf/p5jT9cQzAqxJCCm8gtP6tYqtME303Zv+eio54WI6rKslUG/vJ3o p1Wg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w17si237154ejb.213.2020.10.05.10.38.44; Mon, 05 Oct 2020 10:39:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-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-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728770AbgJERhK (ORCPT + 99 others); Mon, 5 Oct 2020 13:37:10 -0400 Received: from inva020.nxp.com ([92.121.34.13]:52188 "EHLO inva020.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728479AbgJERhD (ORCPT ); Mon, 5 Oct 2020 13:37:03 -0400 Received: from inva020.nxp.com (localhost [127.0.0.1]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 9343F1A0952; Mon, 5 Oct 2020 19:37:01 +0200 (CEST) Received: from inva024.eu-rdc02.nxp.com (inva024.eu-rdc02.nxp.com [134.27.226.22]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 86EF91A094A; Mon, 5 Oct 2020 19:37:01 +0200 (CEST) Received: from fsr-ub1864-111.ea.freescale.net (fsr-ub1864-111.ea.freescale.net [10.171.82.141]) by inva024.eu-rdc02.nxp.com (Postfix) with ESMTP id 3FF202033F; Mon, 5 Oct 2020 19:37:01 +0200 (CEST) From: Diana Craciun To: Alex Williamson , kvm@vger.kernel.org Cc: linux-kernel@vger.kernel.org, bharatb.linux@gmail.com, laurentiu.tudor@nxp.com, Diana Craciun Subject: [PATCH v6 10/10] vfio/fsl-mc: Add support for device reset Date: Mon, 5 Oct 2020 20:36:54 +0300 Message-Id: <20201005173654.31773-11-diana.craciun@oss.nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201005173654.31773-1-diana.craciun@oss.nxp.com> References: <20201005173654.31773-1-diana.craciun@oss.nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently only resetting the DPRC container is supported which will reset all the objects inside it. Resetting individual objects is possible from the userspace by issueing commands towards MC firmware. Signed-off-by: Diana Craciun --- drivers/vfio/fsl-mc/vfio_fsl_mc.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/vfio/fsl-mc/vfio_fsl_mc.c b/drivers/vfio/fsl-mc/vfio_fsl_mc.c index d95568cd8021..d009f873578c 100644 --- a/drivers/vfio/fsl-mc/vfio_fsl_mc.c +++ b/drivers/vfio/fsl-mc/vfio_fsl_mc.c @@ -217,6 +217,10 @@ static long vfio_fsl_mc_ioctl(void *device_data, unsigned int cmd, return -EINVAL; info.flags = VFIO_DEVICE_FLAGS_FSL_MC; + + if (is_fsl_mc_bus_dprc(mc_dev)) + info.flags |= VFIO_DEVICE_FLAGS_RESET; + info.num_regions = mc_dev->obj_desc.region_count; info.num_irqs = mc_dev->obj_desc.irq_count; @@ -299,7 +303,19 @@ static long vfio_fsl_mc_ioctl(void *device_data, unsigned int cmd, } case VFIO_DEVICE_RESET: { - return -ENOTTY; + int ret; + struct fsl_mc_device *mc_dev = vdev->mc_dev; + + /* reset is supported only for the DPRC */ + if (!is_fsl_mc_bus_dprc(mc_dev)) + return -ENOTTY; + + ret = dprc_reset_container(mc_dev->mc_io, 0, + mc_dev->mc_handle, + mc_dev->obj_desc.id, + DPRC_RESET_OPTION_NON_RECURSIVE); + return ret; + } default: return -ENOTTY; -- 2.17.1