Received: by 2002:a05:6a10:2785:0:0:0:0 with SMTP id ia5csp343581pxb; Thu, 14 Jan 2021 07:18:45 -0800 (PST) X-Google-Smtp-Source: ABdhPJwHf9xrDIrAdcWGDBFo++lPgv7ghLL1dP5xSiUcLP/5dNkL7Ol7g7IR++cnnAkaEJcgWIqD X-Received: by 2002:a17:906:780c:: with SMTP id u12mr5567326ejm.125.1610637524936; Thu, 14 Jan 2021 07:18:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610637524; cv=none; d=google.com; s=arc-20160816; b=Ug3qRVbXKipzjG6yPVu2q7peNJ8LqDwBQbN/HVqMTP5EQXdQCgxbwAfq+ZDLD93H5I GIomJNYus2cQqgzM32WjF/L5CFhxNkQ335RAZN0ZRkVuo8z7jrGicuzBpPKrntdEUFit ii0IajrcsmXhE3yXg6hVj7zskZd/m56RAWCq6/4c0nbFOmfLD+7v114sCBcNogutIQ+p LpeqUy0bqIrFv8IUHGEpC/Q4Ho40OjXEqzcZZ6dssXBkajhTruwGHWodqJkUbf//onE2 Ttmy/Hxq2z6gtdH+L3WhszehhsIMtAHAEjmX4SZZMIaVhrYp/FIjDiQ+MZmn8euVFjK4 fGYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=e4TLEJx7bKZ0mhQG+SL1VHbHZM1wFLD+yJlcPz+hMiY=; b=nZY+Ev62KBc5BhLwCAcynEcU1OtV1hPd+rm/q8ABMhxWEo2juPfdiv2YjbxGaRr1U3 2XeSkG4nRlqOPZdorsI+gNhGPZ6ABxkCkqJ5LpzQflQrIMRlz567EOgvp8uR2SB6IRaq V/TZWK139PR6DUYFsGUGed5ocWu8F+8d5XpGZybitg11NZ7mYcfbramjuzgqWvAjc0R6 AFhzGD3HVVrtO2tzEV47V22D/8Y476L6QER+eQ0UpXrMiJQO5VpddjFNTfyNz+pm4hqQ jKl5x4k4PTz7KsHhWfvWePZ6ffgjUnveH7WsUhZIGpTLryV/w4UEfzYe3P9XCwdxhsbL iRyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=nn+dbqMe; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bh14si2641566ejb.45.2021.01.14.07.18.20; Thu, 14 Jan 2021 07:18:44 -0800 (PST) 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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=nn+dbqMe; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727637AbhANPRv (ORCPT + 99 others); Thu, 14 Jan 2021 10:17:51 -0500 Received: from mail.kernel.org ([198.145.29.99]:33224 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728098AbhANPRv (ORCPT ); Thu, 14 Jan 2021 10:17:51 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3BD8623A9B; Thu, 14 Jan 2021 15:17:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1610637430; bh=4vhYsyOGQ/G1Pgl289h+WrEYlBRCR3Y/lE2C1wGE8e0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=nn+dbqMeNUr4Xmc7Dbe9GHD5TIu0mhZxzz+JyQ9SmFMVU38k1vQoUWzdWT9DOjH6z qOXwkfyKhTUbWGOZYNs7qhYl9jmI2NuVAZnL1xh1qNWECBNhzP0pEXJ79hOg37ZsC7 PFFoqA+jmWlXWVHl+z4sMiwtMDbTE5iiv05mPIx0= Date: Thu, 14 Jan 2021 16:17:06 +0100 From: Greg Kroah-Hartman To: Niklas Schnelle Cc: Christian Brauner , Bjorn Helgaas , linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, Pierre Morel , Peter Oberparleiter , Viktor Mihajlovski Subject: Re: [RFC 1/1] s390/pci: expose UID checking state in sysfs Message-ID: References: <20210113185500.GA1918216@bjorn-Precision-5520> <675aa466-59ea-cf8a-6eec-caa6478ba4cd@linux.ibm.com> <20210114134453.bkfik4zjt5ehz6d5@wittgenstein> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jan 14, 2021 at 04:06:11PM +0100, Niklas Schnelle wrote: > > > On 1/14/21 2:58 PM, Greg Kroah-Hartman wrote: > > On Thu, Jan 14, 2021 at 02:44:53PM +0100, Christian Brauner wrote: > >> On Thu, Jan 14, 2021 at 02:20:10PM +0100, Niklas Schnelle wrote: > >>> > >>> > >>> On 1/13/21 7:55 PM, Bjorn Helgaas wrote: > >>>> On Wed, Jan 13, 2021 at 08:47:58AM +0100, Niklas Schnelle wrote: > >>>>> On 1/12/21 10:50 PM, Bjorn Helgaas wrote: > >>>>>> On Mon, Jan 11, 2021 at 10:38:57AM +0100, Niklas Schnelle wrote: > >>>>>>> We use the UID of a zPCI adapter, or the UID of the function zero if > >>>>>>> there are multiple functions in an adapter, as PCI domain if and only if > >>>>>>> UID Checking is turned on. > >>>>>>> Otherwise we automatically generate domains as devices appear. > >>>>>>> > >>>>>>> The state of UID Checking is thus essential to know if the PCI domain > >>>>>>> will be stable, yet currently there is no way to access this information > >>>>>>> from userspace. > >>>>>>> So let's solve this by showing the state of UID checking as a sysfs > >>>>>>> attribute in /sys/bus/pci/uid_checking > >>>> > >>>>>>> +/* Global zPCI attributes */ > >>>>>>> +static ssize_t uid_checking_show(struct kobject *kobj, > >>>>>>> + struct kobj_attribute *attr, char *buf) > >>>>>>> +{ > >>>>>>> + return sprintf(buf, "%i\n", zpci_unique_uid); > >>>>>>> +} > >>>>>>> + > >>>>>>> +static struct kobj_attribute sys_zpci_uid_checking_attr = > >>>>>>> + __ATTR(uid_checking, 0444, uid_checking_show, NULL); > >>>>>> > >>>>>> Use DEVICE_ATTR_RO instead of __ATTR. > >>>>> > >>>>> It's my understanding that DEVICE_ATTR_* is only for > >>>>> per device attributes. This one is global for the entire > >>>>> Z PCI. I just tried with BUS_ATTR_RO instead > >>>>> and that works but only if I put the attribute at > >>>>> /sys/bus/pci/uid_checking instead of with a zpci > >>>>> subfolder. This path would work for us too, we > >>>>> currently don't have any other global attributes > >>>>> that we are planning to expose but those could of > >>>>> course come up in the future. > >>>> > >>>> Ah, I missed the fact that this is a kobj_attribute, not a > >>>> device_attribute. Maybe KERNEL_ATTR_RO()? Very few uses so far, but > >>>> seems like it might fit? > >>>> > >>>> Bjorn > >>>> > >>> > >>> KERNEL_ATTR_* is currently not exported in any header. After > >>> adding it to include/linuc/sysfs.h it indeed works perfectly. > >>> Adding Christian Brauner as suggested by get_maintainers for > >>> their opinion. I'm of course willing to provide a patch > >> > >> Hey Niklas et al. :) > >> > >> I think this will need input from Greg. He should be best versed in > >> sysfs attributes. The problem with KERNEL_ATTR_* to me seems that it's > >> supposed to be kernel internal. Now, that might just be a matter of > >> renaming the macro but let's see whether Greg has any better idea or > >> more questions. :) > > > > The big question is, why are you needing this? > > > > No driver or driver subsystem should EVER be messing with a "raw" > > kobject like this. Just use the existing DEVICE_* macros instead > > please. > > > > If you are using a raw kobject, please ask me how to do this properly, > > as that is something that should NEVER show up in the /sys/devices/* > > tree. Otherwise userspace tools will break. > > > > thanks, > > > > greg k-h > > Hi Greg, > > this is for an architecture specific but global i.e. not device bound PCI > attribute. That's why DEVICE_ATTR_* does not work. BUS_ATTR_* would work > but only if we place the attribute directly under /sys/bus/pci/new_attr. Then you are doing something wrong :) Where _exactly_ are you wanting to put this attribute? > I'm aware that this is quite unusual in fact I couldn't find anything > similar. That's why this is an RFC, with a lengthy cover letter > explaining our use case, that I sent to Bjorn to figure out where to > even place the attribute. > > So I guess this is indeed me asking you how to do this properly. > That said it does not show up under /sys/devices/* only /sys/bus/pci/*. Do NOT put random kobjects under a bus subsystem. If you need that, then use BUS_ATTR_* as that is what it is there for. Again, if you are in a driver subsystem, do not use a raw kobject. Either something is already there for you, or what you want to do is not correct :) thanks, greg k-h