Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp5966391ybl; Tue, 27 Aug 2019 12:18:23 -0700 (PDT) X-Google-Smtp-Source: APXvYqw8LfbOxnN/2xBS1BihiqtpPRxZZUvJFAjurZ0tq5VGTTRGipYmaxQ/tVgNiY6OUBfsfZF6 X-Received: by 2002:a17:90a:2667:: with SMTP id l94mr310625pje.74.1566933503622; Tue, 27 Aug 2019 12:18:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566933503; cv=none; d=google.com; s=arc-20160816; b=g0kIFiTzN04WgUu/whXfpBZqd62y6FrsNMAs9xaJOMTJloIMGrSd7iFPyybW7OEIhy Op7DlebwVHeZbPEit7m6ff7bvWlc7vVRevddZtQ8APbzB/CHfEhaf/rN6EexbhxPr1Xg TaoUoiDNO5dFXpct9Y0czzeYpdY+NPYs4eGFK+41iAGhlSK3I5vR+qKwhd27XTJSQ5dL UuIwT9i9K6YAuEX654EV5nWidSd5xxjOECv9ObjOYsynw2EvebNw1q9gbLMG5/yDPiLK zjygnLNhrfZi6bfRrVJRcdQk8NJjrbXhrH7t8mUr6o91Spy2KFyRzKjgDXf2gjWHCVCv MYtw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=v4395vzOJ9HWA/0B6hU56YfNWPChg1IU7vLuOTbihGw=; b=eKxweMBZith2JrtXZtKj0jG1YF6eypb9s/eRolrtSJoUXu3lg1k29Yba4+twQ+IxP4 g8M3K7hYLdCM2C6rJ7Sq8cMHEl7WO8d8IsPdu8lruFmoDkIIC0A8+u82U1/yX8+bgfwQ FGfMbObvqZzayt6qGYYL4BJzk7rr40Amw7CPKcVXnwUNgvAjhLVoySvip2T+hyjCRUDU ISjF4OBOEJafBQDC4aQnpCQalxHydhUWDYNT00E6PeZBPp1ceXIzaC2FLI4N4LHOS15v Rtd+H0xnqIjW1uXdtjd5fl0zVNVWa+UYQ/WrsCPT6OadMS/ygSBpBPMeG3nJHFHO1tY5 ZTtQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mellanox.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p9si217786pjp.4.2019.08.27.12.18.06; Tue, 27 Aug 2019 12:18:23 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mellanox.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726871AbfH0TRD (ORCPT + 99 others); Tue, 27 Aug 2019 15:17:03 -0400 Received: from mail-il-dmz.mellanox.com ([193.47.165.129]:38840 "EHLO mellanox.co.il" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730237AbfH0TRC (ORCPT ); Tue, 27 Aug 2019 15:17:02 -0400 Received: from Internal Mail-Server by MTLPINE1 (envelope-from parav@mellanox.com) with ESMTPS (AES256-SHA encrypted); 27 Aug 2019 22:16:59 +0300 Received: from sw-mtx-036.mtx.labs.mlnx (sw-mtx-036.mtx.labs.mlnx [10.12.150.149]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id x7RJGuGq026842; Tue, 27 Aug 2019 22:16:57 +0300 From: Parav Pandit To: alex.williamson@redhat.com, jiri@mellanox.com, kwankhede@nvidia.com, cohuck@redhat.com, davem@davemloft.net Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Parav Pandit Subject: [PATCH v1 0/5] Introduce variable length mdev alias Date: Tue, 27 Aug 2019 14:16:49 -0500 Message-Id: <20190827191654.41161-1-parav@mellanox.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20190826204119.54386-1-parav@mellanox.com> References: <20190826204119.54386-1-parav@mellanox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org To have consistent naming for the netdevice of a mdev and to have consistent naming of the devlink port [1] of a mdev, which is formed using phys_port_name of the devlink port, current UUID is not usable because UUID is too long. UUID in string format is 36-characters long and in binary 128-bit. Both formats are not able to fit within 15 characters limit of netdev name. It is desired to have mdev device naming consistent using UUID. So that widely used user space framework such as ovs [2] can make use of mdev representor in similar way as PCIe SR-IOV VF and PF representors. Hence, (a) mdev alias is created which is derived using sha1 from the mdev name. (b) Vendor driver describes how long an alias should be for the child mdev created for a given parent. (c) Mdev aliases are unique at system level. (d) alias is created optionally whenever parent requested. This ensures that non networking mdev parents can function without alias creation overhead. This design is discussed at [3]. An example systemd/udev extension will have, 1. netdev name created using mdev alias available in sysfs. mdev UUID=83b8f4f2-509f-382f-3c1e-e6bfe0fa1001 mdev 12 character alias=cd5b146a80a5 netdev name of this mdev = enmcd5b146a80a5 Here en = Ethernet link m = mediated device 2. devlink port phys_port_name created using mdev alias. devlink phys_port_name=pcd5b146a80a5 This patchset enables mdev core to maintain unique alias for a mdev. Patch-1 Introduces mdev alias using sha1. Patch-2 Ensures that mdev alias is unique in a system. Patch-3 Exposes mdev alias in a sysfs hirerchy. Patch-4 Extends mtty driver to optionally provide alias generation. This also enables to test UUID based sha1 collision and trigger error handling for duplicate sha1 results. In future when networking driver wants to use mdev alias, mdev_alias() API will be added to derive devlink port name. [1] http://man7.org/linux/man-pages/man8/devlink-port.8.html [2] https://docs.openstack.org/os-vif/latest/user/plugins/ovs.html [3] https://patchwork.kernel.org/cover/11084231/ --- Changelog: v0->v1: - Addressed comments from Alex Williamson, Cornelia Hunk and Mark Bloch - Moved alias length check outside of the parent lock - Moved alias and digest allocation from kvzalloc to kzalloc - &alias[0] changed to alias - alias_length check is nested under get_alias_length callback check - Changed comments to start with an empty line - Added comment where alias memory ownership is handed over to mdev device - Fixed cleaunup of hash if mdev_bus_register() fails - Updated documentation for new sysfs alias file - Improved commit logs to make description more clear - Fixed inclusiong of alias for NULL check - Added ratelimited debug print for sha1 hash collision error Parav Pandit (5): mdev: Introduce sha1 based mdev alias mdev: Make mdev alias unique among all mdevs mdev: Expose mdev alias in sysfs tree mdev: Update sysfs documentation mtty: Optionally support mtty alias .../driver-api/vfio-mediated-device.rst | 5 + drivers/vfio/mdev/mdev_core.c | 117 +++++++++++++++++- drivers/vfio/mdev/mdev_private.h | 5 +- drivers/vfio/mdev/mdev_sysfs.c | 26 +++- include/linux/mdev.h | 4 + samples/vfio-mdev/mtty.c | 10 ++ 6 files changed, 157 insertions(+), 10 deletions(-) -- 2.19.2