From patchwork Wed Sep 15 10:12:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xueming Li X-Patchwork-Id: 98895 X-Patchwork-Delegate: maxime.coquelin@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1F4DBA0C41; Wed, 15 Sep 2021 12:12:29 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 98B294003F; Wed, 15 Sep 2021 12:12:28 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2079.outbound.protection.outlook.com [40.107.93.79]) by mails.dpdk.org (Postfix) with ESMTP id 7FF124003C for ; Wed, 15 Sep 2021 12:12:26 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h8CTym9v3UxUUVRK4E2t93q5zBZfEjrK8p2N2aS5FPslAZMPRgV9td/6jX0vs4z7339O3kBKBFEZ5UP0Mopyy4EFjdyK8ChfK6sAqnKxrWNEfoVFUpIPfM2/uSzWRO4QTw/xUhdAtxtM7N7AV42XwVjJHY/CX9NJhSvI+Zd5Ty9NRAH5HCjy1iVfeyxhjHtM1dYTMfLnu+RK+OyGMGLL0NJSPjMPQomCthTXnw2cQPteMsx+pesogvtkNVokouEC3UgwEC+wYihdwOmTBiGG/8Otd8K8EQAf/4a0SZ+ZAOh3CwNrjcQdiRSd8c40D+fkfDT94ErLamGJdA/Anpyj0A== 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; bh=yjSL/VZebPXQOhoe7mmg1eX1iyDG29f6gBfLz0Yr5KM=; b=NkQur0CG+SshQCZg0AmYX9QVoH3U9VzMxDSStbeicuQ0fv4QEPRroiav3kSsuezj5HwdIFCrGjlz5JvJx+aUS5qY7O+o4owZ28XFh64qT7/Crpq6377iHRbuAAOtiRIJ3pyOg+8Q8Sar8JTozBmAGyaT2vcHXxhnGufRJvqDX2ptjMWku2vdOfddrTqjMLWUiWTRF3CfwbWQBIV/3PiABjtsN+UwddIW1rOiiJaWRDtuXAGezxd4kgeRiswPM8a8hSlWbL2m6ZtOWUJfAVKhkZX2CnDBGwtpXCP4DdxporWgfZxwtIQnmU8mVoRfdyUTxKut+mS4i3BLJOM0ZAWkjg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.35) smtp.rcpttodomain=oktetlabs.ru smtp.mailfrom=nvidia.com; dmarc=pass (p=quarantine sp=none pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yjSL/VZebPXQOhoe7mmg1eX1iyDG29f6gBfLz0Yr5KM=; b=FhEkbwnWybAtk9Wdxr4Tb889p95vxnlddlYPQyMfilvcHsnbjAgJpRxKPrunHKhsIzarcsjibNIkPBSA+ZE0tHvjjDITKE21jO7q/Oj9/NQUSGjwlDCMumuzmvi8+9yrcrjXWNkxLaiD7jg08rrskr6MVBzmCNADEZxlqFixBzyLIqwz4k+MM3UJ80UkZ/7wqluHQjNKmdlDHitftG9EUoOUVl9EljpCQGbczj9m9A/Ml4KK6uLzwYXA4ztR7uz8zOrSdA+g4/RXGYxi6xhBHAduEnfdvJE7BNaiQL5vpzLjORdTAE+YOueKrsVsRB6bfepASJGwgbqheYennsg1qQ== Received: from BN8PR15CA0054.namprd15.prod.outlook.com (2603:10b6:408:80::31) by BY5PR12MB4273.namprd12.prod.outlook.com (2603:10b6:a03:212::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Wed, 15 Sep 2021 10:12:23 +0000 Received: from BN8NAM11FT050.eop-nam11.prod.protection.outlook.com (2603:10b6:408:80:cafe::f0) by BN8PR15CA0054.outlook.office365.com (2603:10b6:408:80::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Wed, 15 Sep 2021 10:12:23 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.35) smtp.mailfrom=nvidia.com; oktetlabs.ru; dkim=none (message not signed) header.d=none;oktetlabs.ru; dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.112.35 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.35; helo=mail.nvidia.com; Received: from mail.nvidia.com (216.228.112.35) by BN8NAM11FT050.mail.protection.outlook.com (10.13.177.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4523.14 via Frontend Transport; Wed, 15 Sep 2021 10:12:22 +0000 Received: from DRHQMAIL107.nvidia.com (10.27.9.16) by HQMAIL111.nvidia.com (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Wed, 15 Sep 2021 10:12:21 +0000 Received: from nvidia.com (172.20.187.5) by DRHQMAIL107.nvidia.com (10.27.9.16) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Wed, 15 Sep 2021 10:12:19 +0000 From: Xueming Li To: CC: , Andrew Rybchenko , Maxime Coquelin , Chenbo Xia Date: Wed, 15 Sep 2021 18:12:04 +0800 Message-ID: <20210915101204.81754-1-xuemingl@nvidia.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210823063906.1382544-1-xuemingl@nvidia.com> References: <20210823063906.1382544-1-xuemingl@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [172.20.187.5] X-ClientProxiedBy: HQMAIL101.nvidia.com (172.20.187.10) To DRHQMAIL107.nvidia.com (10.27.9.16) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 48459630-1a29-4879-a8ec-08d978314eea X-MS-TrafficTypeDiagnostic: BY5PR12MB4273: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3044; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AkgW0gKtgS3nMrv+MMWEDZeCz29hMkrIQ0QtooPHr4U+qUzJ9fmuOQpC1oQrNVvmRr5hRAWA3VQRrHe6+XGAIzkItnW9chHxWu07kVU8cUqT5be8l8JVSTZIwL6Kd/qpIo59UMS4YiEVj2twVnNmKY2f6TqF/VP3E6aXVf6+YrkguNb+8FaAmmwi1uS+DAeLs0XwAeWwWG2cNwlW6/nhRs8p1dNQMpcLxqVDI4LOc8zYojeb77+bl0jowXNZ3Y5a1iC3TEaRBEENY6hhAz02rL5ndiM32Y9swVwanmzt5RvDl4VcRAoBPoHQpKTNVSgNd8MGsIZf38f8LMM3VQV9xyTBOc6q85DojpiSCAljJ3Mioi3KMpzl6875upSGiZ55H5vefMw1EcxrZWXe4Gm/HV3lt2C85T6lIGR1PD+SewF5wiav5JM5wgeCSdhPU8YFjYNUW/UuknVDjXvtmPOks+rQcuKSgLgdS5r2nmCeSUQKqG9rg6mJAYvYTbb1J2S6Hc6e9NfmQhnBj5t/WznuKxHj9Zihh96GW005u3yqa+douIybWUxUziDqNBIxCFTyQhOLD3fk2u4H/RdDhIjwOBB20KA/nAH6joQXdo8k/fShGBjqQ+QPXC4UAmkyHSeCO59KlwHKicDbEznY/HiK7eW1ufbPSj/MKeA4ricc2zngrZH7Jn8EAwrxFNuOBEajPpVuExy3Z9jlZMxVfF70Ow== X-Forefront-Antispam-Report: CIP:216.228.112.35; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid02.nvidia.com; CAT:NONE; SFS:(4636009)(136003)(39860400002)(376002)(396003)(346002)(36840700001)(46966006)(36860700001)(356005)(70586007)(70206006)(2906002)(6666004)(83380400001)(8936002)(7696005)(82310400003)(2616005)(26005)(8676002)(426003)(336012)(16526019)(36906005)(186003)(36756003)(7636003)(82740400003)(54906003)(316002)(55016002)(47076005)(1076003)(86362001)(5660300002)(478600001)(6286002)(6916009)(4326008); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2021 10:12:22.0658 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 48459630-1a29-4879-a8ec-08d978314eea X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.35]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT050.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4273 Subject: [dpdk-dev] [PATCH v2] net/virtio: wait device ready during reset X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" According to virtio spec, the device MUST reset when 0 is written to device_status, and present 0 in device_status once reset is done. This patch waits status value to be 0 during reset operation, if timeout in 3 seconds, log and continue. Signed-off-by: Xueming Li Cc: Andrew Rybchenko Acked-by: Andrew Rybchenko Reviewed-by: Chenbo Xia --- drivers/net/virtio/virtio.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/net/virtio/virtio.c b/drivers/net/virtio/virtio.c index 7e1e77797f..d9e642f412 100644 --- a/drivers/net/virtio/virtio.c +++ b/drivers/net/virtio/virtio.c @@ -3,7 +3,10 @@ * Copyright(c) 2020 Red Hat, Inc. */ +#include + #include "virtio.h" +#include "virtio_logs.h" uint64_t virtio_negotiate_features(struct virtio_hw *hw, uint64_t host_features) @@ -38,9 +41,17 @@ virtio_write_dev_config(struct virtio_hw *hw, size_t offset, void virtio_reset(struct virtio_hw *hw) { + uint32_t retry = 0; + VIRTIO_OPS(hw)->set_status(hw, VIRTIO_CONFIG_STATUS_RESET); - /* flush status write */ - VIRTIO_OPS(hw)->get_status(hw); + /* Flush status write and wait device ready max 3 seconds. */ + while (VIRTIO_OPS(hw)->get_status(hw) != VIRTIO_CONFIG_STATUS_RESET) { + if (retry++ > 3000) { + PMD_INIT_LOG(WARNING, "port %u device reset timeout", hw->port_id); + break; + } + usleep(1000L); + } } void