RE: [PATCH] usb: gadget: composite: Provide list of registered functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Felipe Balbi [mailto:balbi@xxxxxx]
> Sent: Friday, January 23, 2015 6:01 PM
> To: Krzysztof Opasiak
> Cc: balbi@xxxxxx; linux-usb@xxxxxxxxxxxxxxx;
> gregkh@xxxxxxxxxxxxxxxxxxx; bigeasy@xxxxxxxxxxxxx;
> s.wadas@xxxxxxxxxxx; k.lewandowsk@xxxxxxxxxxx;
> m.szyprowski@xxxxxxxxxxx; andrzej.p@xxxxxxxxxxx
> Subject: Re: [PATCH] usb: gadget: composite: Provide list of
> registered functions
> 
> On Fri, Jan 23, 2015 at 05:56:22PM +0100, Krzysztof Opasiak wrote:
> >
> >
> > > -----Original Message-----
> > > From: Felipe Balbi [mailto:balbi@xxxxxx]
> > > Sent: Friday, January 23, 2015 5:27 PM
> > > To: Krzysztof Opasiak
> > > Cc: balbi@xxxxxx; linux-usb@xxxxxxxxxxxxxxx;
> > > gregkh@xxxxxxxxxxxxxxxxxxx; bigeasy@xxxxxxxxxxxxx;
> > > s.wadas@xxxxxxxxxxx; k.lewandowsk@xxxxxxxxxxx;
> > > m.szyprowski@xxxxxxxxxxx; andrzej.p@xxxxxxxxxxx
> > > Subject: Re: [PATCH] usb: gadget: composite: Provide list of
> > > registered functions
> > >
> > > On Fri, Jan 23, 2015 at 05:09:07PM +0100, Krzysztof Opasiak
> wrote:
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: Felipe Balbi [mailto:balbi@xxxxxx]
> > > > > Sent: Monday, January 19, 2015 7:59 PM
> > > > > To: Krzysztof Opasiak
> > > > > Cc: balbi@xxxxxx; linux-usb@xxxxxxxxxxxxxxx;
> > > > > gregkh@xxxxxxxxxxxxxxxxxxx; bigeasy@xxxxxxxxxxxxx;
> > > > > s.wadas@xxxxxxxxxxx; k.lewandowsk@xxxxxxxxxxx;
> > > > > m.szyprowski@xxxxxxxxxxx; andrzej.p@xxxxxxxxxxx
> > > > > Subject: Re: [PATCH] usb: gadget: composite: Provide list
> of
> > > > > registered functions
> > > > >
> > > > > On Mon, Jan 19, 2015 at 02:17:19PM +0100, Krzysztof Opasiak
> > > wrote:
> > > > > > Driver which provides implementation of some USB
> functions
> > > > > registers
> > > > > > usb_function_driver structure in composite framework.
> > > > > > Function drivers are identifed using registered name.
> > > > > >
> > > > > > When gadget is composed using configfs user must know
> what
> > > names
> > > > > has
> > > > > > been registered. If function is compiled as a module this
> > > > > information
> > > > > > can be found in modules.alias file. If function is
> compiled-
> > > in,
> > > > > there
> > > > > > is no way to discover what usb functions are available in
> > > > > currently
> > > > > > running kernel.
> > > > > >
> > > > > > Such situation is nothing new for linux kernel.
> > > > > > Similar situation is with file systems. While mounting
> user
> > > can
> > > > > > provide an fs type argument using -t option in mount.
> > > > > > Those type names are registered by drivers. To make those
> > > names
> > > > > > discoverable there is a /proc/filesystems which exports
> the
> > > list
> > > > > of
> > > > > > currently registered file systems.
> > > > > >
> > > > > > This patch adds /proc/usb-functions attribute which
> exports
> > > the
> > > > > list
> > > > > > of currently registered function drivers.
> > > > > > This allows user to discover list of both compiled-in
> > > functions
> > > > > and
> > > > > > from loaded kernel modules.
> > > > > >
> > > > > > Signed-off-by: Krzysztof Opasiak <k.opasiak@xxxxxxxxxxx>
> > > > >
> > > > > you need to document the new file under Documentation/ABI/
> > > > >
> > > >
> > > > I have just sent v2 version with documentation.
> > > >
> > > > I have done some more research and it looks like /sys/kernel
> > > could be
> > > > a good alternative if you find that proc usage is not a good
> > > idea.
> > > > What do you thing? Should we continue with /proc/usb-
> functions or
> > > > replace this patch with /sys/kernel/usb-functions or maybe
> > >
> > > why don't we place the file at the same directory as our
> configfs
> > > has been mounted ?
> >
> > Default place for mounting configfs is /sys/kernel/config.
> > It is created in init function of configfs module. For example
> systemd
> > mounts there configfs on system startup.
> >
> > So summing up, desired location should be /sys/kernel/usb-
> functions?
> 
> shouldn't this be /sys/kernel/config/usb-functions ?
> 
> in fact, thinking about absolute paths isn't really the best. I can
> decide to mount configfs anywhere. What we want is for the file to
> be available on the root directory of our usb-functions configfs
> interface
> :-)
> 

So I must have misunderstood something.

I'm not sure if this is a good idea.
Some userspace depends on assumption that sys/kernel/config
directory is empty and it's default place for mounting configfs.
So why place there any attribute if we will mount there filesystem
and we won't see it?

I have prepared list of options related to your proposition:

1) Add a sysfs entry in config directory.
	This is easy but from userspace point of view
	It looks a little bit weird to place an attribute
	In "canonical" location for mounting some filesystem.
	Moreover config directory is maintained by configfs
	module and adding our subsystem specific file to this
	generic configfs location doesn't look good.

2) Add a file in configfs:
	2a) In configfs root (next to usb-gadget subdir)
		I don't think that it is not a good idea.
		ConfigFS is generic filesystem and its root directory
		is reserved only for subsystem dirs.
		Adding there a file which is specific for only one of
		subsystems doesn't sound good to me.
		Moreover, as far as I know, it is currently impossible
		or at least requires changes in configfs.

	2b) In usb-gadget directory
		There is usb-gadget subdirectory in configfs root.
		From technical point of view we could easily add
		There a file to expose the list of available functions.
		Technically yes but... There are some problems.
		First of all I'm not sure if it follows the main idea
		of userspace-driven nature of configfs. This file system
		should be used for managing objects in linux kernel
		rather than exporting information about kernel
abilities.
		Next one is the usb-gadget ABI. I'm not sure if adding
		there a file won't be and ABI break. As described in
		Documentation/ABI/configfs-usb-gadget:

What:		/config/usb-gadget
Date:		Jun 2013
KernelVersion:	3.11
Description:
		This group contains sub-groups corresponding to created
		USB gadgets.

		So there is nothing about skipping any files by
userspace
		tools. This means that there could be some userspace
which
		depends on assumption that usb-gadget contains only
gadget
		directories and nothing more. Just like it is described
in
		ABI documentation.


Summing up, in my opinion configfs is not a good place for exposing
Kernel abilities and details about what is available inside.

For such purpouse there are filesystems like procfs and sysfs.
While procfs should be more related to process itself
there is a lot of attributes which are related to current
kernel state (list of registered file systems, list of loaded
kernel modules etc). If we should follow the way how things has been
done in history we should create /proc/usb-functions file.

If extending procfs is prohibited we should consider placing this
file somewhere in sysfs hierarchy. I don't have strong opinion where
exactly it should be placed, but let's find quickly some reasonable
location;)


Best regards,

--
Krzysztof Opasiak
Samsung R&D Institute Poland
Samsung Electronics






--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux