Hi,
I have encountered the same problem which was reported in
http://lkml.org/lkml/2007/9/29/45For the first one "usbcore duplicated sysfs filename" , I have submit
a patch to fix it.For the "bInterfaceNumber" one, I have no idea, the same problem still
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
I have tried several times to duplicate this, most recently under
2.6.23-mm1. But nothing goes wrong; the error messages don't appear.You may have to do your own debugging. Try adding printk statements to
usb_create_sysfs_intf_files() and usb_remove_sysfs_intf_files() so you
can tell when they get called.Alan Stern
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
I finally duplicated this on one of my machines here at boot time, with
USB built into the kernel. I'll work tomorrow on tracking this down
further...thanks,
greg k-h
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
Hi,
I add some printk messages, dump_stack and some others, here is the
dmesg dump with debug info(lines begin with "hidave"):Linux version 2.6.23-mm1 (dave@darkstar) (gcc version 3.4.6) #4 SMP
PREEMPT Tue Oct 16 11:14:10 CST 2007
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000003fe88c00 (usable)
BIOS-e820: 000000003fe88c00 - 000000003fe8ac00 (ACPI NVS)
BIOS-e820: 000000003fe8ac00 - 000000003fe8cc00 (ACPI data)
BIOS-e820: 000000003fe8cc00 - 0000000040000000 (reserved)
BIOS-e820: 00000000f0000000 - 00000000f4000000 (reserved)
BIOS-e820: 00000000fec00000 - 00000000fed00400 (reserved)
BIOS-e820: 00000000fed20000 - 00000000feda0000 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fef00000 (reserved)
BIOS-e820: 00000000ffb00000 - 0000000100000000 (reserved)
126MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000fe710
Entering add_active_range(0, 0, 261768) 0 entries of 256 used
sizeof(struct page) = 32
Zone PFN ranges:
DMA 0 -> 4096
Normal 4096 -> 229376
HighMem 229376 -> 261768
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
0: 0 -> 261768
On node 0 totalpages: 261768
Node 0 memmap at 0xc1000000 size 8388608 first pfn 0xc1000000
DMA zone: 32 pages used for memmap
DMA zone: 0 pages reserved
DMA zone: 4064 pages, LIFO batch:0
Normal zone: 1760 pages used for memmap
Normal zone: 223520 pages, LIFO batch:31
HighMem zone: 253 pages used for memmap
HighMem zone: 32139 pages, LIFO batch:7
Movable zone: 0 pages used for memmap
DMI 2.3 present.
ACPI: RSDP 000FEB00, 0024 (r2 DELL )
ACPI: XSDT 000FD267, 005C (r1 DELL DM051 7 ASL 61)
ACPI: FACP 000FD35F, 00F4 (r3 DELL DM051 7 ASL 61)
ACPI: DSDT FFFC755F, 2D0E (r1 DELL dt_ex 1000 INTL 20050309)
ACPI: FACS 3FE88C00, 0040
ACPI...
Okay, good, the extra printk messages show exactly where the problem
lies.In usb_set_configuration(), each new interfaces is registered and then
usb_create_sysfs_intf_files() gets called for that interface. This
makes sense, because obviously we can't create sysfs files for an
interface before it is registered.The problem is that during registration drivers get probed, and drivers
sometimes call usb_set_interface() from their probe method. This
routine also calls usb_create_sysfs_intf_files(), and the result is
that the sysfs files get created twice:First by usb_set_interface, from the driver probe;
Then by usb_set_configuration, when registration is
finished.I can think of two possible ways around the problem. One is to add a
bit to the usb_interface structure, recording whether the sysfs files
have been created. The other is always to remove the files just before
trying to create them.The first seems more workable, although it is slightly awkward. Greg,
what do you think?Alan Stern
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
--kORqDWCi7qDJ0mEj
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printableI haven't looked at this code at all, but neither approach feels right to
me.How does this work at all? Even if you load a driver later, wouldn't it
call usb_set_interface(), which would call usb_create_sysfs_intf_files()
and hit the same issue?Heck, why do both call usb_create_sysfs_intf_file()? I would guess if
you're *changing* the active configuration you would need to do that, but
why in usb_set_interface() at all?Matt
--=20
Matthew Dharm Home: mdharm-usb@one-eyed-alien.=
net=20
Maintainer, Linux USB Mass Storage DriverI say, what are all those naked people doing?
-- Big client to Stef
User Friendly, 12/14/1997--kORqDWCi7qDJ0mEj
Content-Type: application/pgp-signature
Content-Disposition: inline-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)iD8DBQFHFOfsHL9iwnUZqnkRAt5lAJ49jhKFScgOI9sWpqMWd0xlAFz54QCfUcRL
3UEcJFm5k2VHdelFAWrAJuU=
=JqwZ
-----END PGP SIGNATURE-------kORqDWCi7qDJ0mEj--
usb_set_interface() is smart enough to remove the old interface files
before creating new ones, since it expects them to exist already.
Hence there's no problem in that scenario.But usb_set_configuration doesn't expect there to be any pre-existing
interface files, because there isn't even an interface until theFor a couple of reasons. The "interface" attribute file contains the
iInterface string descriptor, and that file is present only if such a
descriptor exists. Since different altsettings might not agree on
whether or not iInterface exists, the attribute has to be created anew
for each altsetting. (Yes, we could let the file always be present and
just be blank if there is no descriptor.)The most important reason has to do with the endpoint pseudo-devices.
Different altsettings can have different endpoints, so those have to be
removed and re-created whenever the altsetting changes.Alan Stern
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
--ctP54qlpMx3WjD+/
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printableAnd I'm guessing that you can't call usb_create_sysfs_intf_files() until
Right, altsettings. I forgot about those. I only ever think in terms of
multiple configurations.*grumble*
If usb_set_interface() has to be smart enough to remove existing files
first already, then I guess it's reasonably symmetric to have
usb_set_configuration() have the same smarts. Maybe they can share some
common code, even.Matt
--=20
Matthew Dharm Home: mdharm-usb@one-eyed-alien.=
net=20
Maintainer, Linux USB Mass Storage DriverC: Why are you upgrading to NT?
AJ: It must be the sick, sadistic streak that runs through me.
-- Chief and A.J.
User Friendly, 5/12/1998--ctP54qlpMx3WjD+/
Content-Type: application/pgp-signature
Content-Disposition: inline-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)iD8DBQFHFQ1THL9iwnUZqnkRAlQ5AKClGtzLNuHpy7uYWq+qXunNhwi3fQCfQrOd
RzharJABp+pgciis5sO3RZA=
=2jfu
-----END PGP SIGNATURE-------ctP54qlpMx3WjD+/--
It's not a big deal to remove the files first. In fact, here's a patch
to do it. Dave, see if this doesn't fix your problem. I don't like it
much because it does an unnecessary remove/create cycle, but that's
better than doing something wrong.It's slightly odd that the sysfs core logs an error when you try to
create the same file twice but it doesn't when you try to remove a
non-existent file (or try to remove an existing file twice). Oh
well...Alan Stern
Index: usb-2.6/drivers/usb/core/message.c
===================================================================
--- usb-2.6.orig/drivers/usb/core/message.c
+++ usb-2.6/drivers/usb/core/message.c
@@ -1643,7 +1643,13 @@ free_interfaces:
intf->dev.bus_id, ret);
continue;
}
- usb_create_sysfs_intf_files (intf);
+
+ /* The driver's probe method can call usb_set_interface(),
+ * which would mean the interface's sysfs files are already
+ * created. Just in case, we'll remove them first.
+ */
+ usb_remove_sysfs_intf_files(intf);
+ usb_create_sysfs_intf_files(intf);
}usb_autosuspend_device(dev);
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
I used to have the 'remove a non-existant file' warning, but that just
If this fixes the problem, care to resend it with a signed-off-by:?
Yeah, it's not the nicest solution, but I can't think of any other one
either right now :(thanks,
greg k-h
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
Hi,
I prefer "remove then create".But IMHO the sysfs or driver core layer should have such functions to
set some bit for the sysfs files creating.Regards
dave-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
| Greg KH | Re: Announce: Linux-next (Or Andrew's dream :-)) |
| Greg KH | [patch 26/73] NET: Correct two mistaken skb_reset_mac_header() conversions. |
| Greg Kroah-Hartman | [PATCH 007/196] Chinese: add translation of stable_kernel_rules.txt |
| Alan Cox | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
git: | |
| Alexey Dobriyan | Re: [GIT]: Networking |
| Gerrit Renker | [PATCH 03/37] dccp: List management for new feature negotiation |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Andrew Morton | Re: [BUG] New Kernel Bugs |
