From patchwork Fri Jan 5 18:51:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stuart Hayes X-Patchwork-Id: 856145 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-pci-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="p6nXsrU+"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zCv0l5lkxz9s4s for ; Sat, 6 Jan 2018 05:52:03 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752183AbeAESwB (ORCPT ); Fri, 5 Jan 2018 13:52:01 -0500 Received: from mail-oi0-f65.google.com ([209.85.218.65]:38058 "EHLO mail-oi0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752177AbeAESwB (ORCPT ); Fri, 5 Jan 2018 13:52:01 -0500 Received: by mail-oi0-f65.google.com with SMTP id r65so3696060oie.5 for ; Fri, 05 Jan 2018 10:52:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:cc:from:subject:message-id:date:user-agent:mime-version :content-language:content-transfer-encoding; bh=vH1SyQhj99vWI2eFNGjMQUSwFtAh2OVqsFzDQ17RjkY=; b=p6nXsrU+slqlaseRMHCFtPBaK58oYyBcxf+x87lgJFv3J1oqmC3l53Ik3Ih5i4b7Ye CgUV4p4KlRqyJJr3/RkRRgOFrBN0dkbP5IJjOGaXDa+ZoMpikLDCQfrxL4slApuxnTsw ChpcL8n6kSd0aXSNa9JQxHtofo4MDABskj0RORExylh2eBkYBqk551egGKSOhDnaIWUw CgmwAWBCJBcKopsJDjaZ7+UFDMZlb5xcFAHPKyP0h9o3j2u2PpmFrdTQwD1IkefNgmt0 2bOrhez6dgM+F33S79oSG7veSftY0ZNhFmNtp9I2XYlR+BUvnrNJyI3AJH0j1Kw2H/ih 45eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:cc:from:subject:message-id:date:user-agent :mime-version:content-language:content-transfer-encoding; bh=vH1SyQhj99vWI2eFNGjMQUSwFtAh2OVqsFzDQ17RjkY=; b=CfNaKZ+AdXOmVR9bLsA+LABJXDNtvQwWSsOxWVayzlwLlBKUxd+/zT8FqjhVdaAqeN wTRoc3NDQ9A1ihnsTRYV3bulHNhZFcj+Y6vkiBOLDxUid5NqcKF1t9hQx2/R+lR9KZFe q0vYuemnr2+yg51MHmI/577JnRVNLjtvZtYpuhxjr/zLHxmvwwOLEHtUn5deH0NhlTRV kuTs2fabEv2nm8p9RYZD521UPjZ81UMFmaYdAmNRu7QOZJZ6/DfIOQiR938TGSrcc4va 6s3ceM7Rf9mZTarJ9jg0GboNvrCtpSs5lVDC4nTF2jIa1HUWNUmfBFZp7qh6+wIILJsf NoNg== X-Gm-Message-State: AKGB3mIuqGaFdxASpKDGz6JGjW4fg+/r/RQgt3aQ75nTVfcex8i0eN5L WVgMD6dPp/iDedWhCcgoxEW+9Mco X-Google-Smtp-Source: ACJfBosWPFYReXcd4+W7AKsjgbHsGjDyPAkmeM+KX3BNrrLTP6LGrHlYISqXMO5qxkdzhBywSqWZgQ== X-Received: by 10.202.213.129 with SMTP id m123mr2086634oig.187.1515178320259; Fri, 05 Jan 2018 10:52:00 -0800 (PST) Received: from [192.168.0.2] (cpe-24-27-59-32.austin.res.rr.com. [24.27.59.32]) by smtp.gmail.com with ESMTPSA id g9sm521752otc.64.2018.01.05.10.51.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 Jan 2018 10:51:59 -0800 (PST) To: Bjorn Helgaas Cc: linux-pci@vger.kernel.org From: Stuart Hayes Subject: [PATCH] PCI: Expose ari_enabled in sysfs Message-ID: Date: Fri, 5 Jan 2018 12:51:55 -0600 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 Content-Language: en-US X-Antivirus: Avast (VPS 180105-2, 01/05/2018), Outbound message X-Antivirus-Status: Clean Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Some multifunction PCI devices with more than 8 functions use "alternative routing-ID interpretation" (ARI), which means the 8-bit device/function number field will be interpreted as 8 bits specifying the function number (the device number is 0 implicitly), rather than the upper 5 bits specifying the device number and the lower 3 bits specifying the function number. The kernel can enable and use this. Expose in a sysfs attribute whether the kernel has enabled ARI, so that a program in userspace won't have to parse PCI devices and PCI configuration space to figure out if it is enabled. This will allow better predictable network naming using PCI function numbers without using PCI bus or device numbers, which is desirable because bus and device numbers can change with system configuration but function numbers will not. Signed-off-by: Stuart Hayes --- linux-4.15-rc6/drivers/pci/pci-sysfs.c.orig 2017-12-31 17:47:43.000000000 -0500 +++ linux-4.15-rc6/drivers/pci/pci-sysfs.c 2018-01-02 13:58:23.372928377 -0500 @@ -278,6 +278,16 @@ static ssize_t subordinate_bus_number_sh } static DEVICE_ATTR_RO(subordinate_bus_number); +static ssize_t ari_enabled_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct pci_dev *pci_dev = to_pci_dev(dev); + + return sprintf(buf, "%u\n", pci_ari_enabled(pci_dev->bus)); +} +static DEVICE_ATTR_RO(ari_enabled); + static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -786,6 +796,7 @@ static struct attribute *pci_dev_attrs[] &dev_attr_devspec.attr, #endif &dev_attr_driver_override.attr, + &dev_attr_ari_enabled.attr, NULL, };