Hi Felipe,
I tried today's version of linux-next tree (commit id
b1714a88bee1ae, "Add linux-next specific files for 20130222").
My PXA based platform bugs on bootup. I have no console available on my
platform, just a JTAG, so this is the info I have :
- I'm using a Mitac MIO A701 board (arch/arm/mach-pxa/mioa701.c)
- on gadget side, I'm using g_ether + pxa27x_udc
So far, I didn't have any composite driver enabled (as the PXA suffer from a
severe hardware defect, see comment in header of pxa27x_udc.c).
Now, what I gathered from the JTAG is in [1].
You can see that in sysfs_create_file(), the first argument has :
&dev->kobj->sd == NULL.
And of course in fs/sysfs/file.c :
BUG_ON(!kobj || !kobj->sd || !attr);
Therefore, I hit a BUG.
Could you tell me what changed recently that triggers this ? I saw in my .config
CONFIG_USB_LIBCOMPOSITE=y which looks a bit suspect to me, but I'm sure you'll
tell me what recent change prevents my platform from booting.
Cheers.
--
Robert
[1]: JTAG + GDB analysis
1597 ret = device_create_file(&gadget->dev, &dev_attr_suspended);
(gdb) bt
#0 composite_dev_prepare (composite=0xc04fdb6c, cdev=0xc39a8660) at
drivers/usb/gadget/composite.c:1597
#1 0xc024cf80 in composite_bind (gadget=0xc04f4020, gdriver=0xc04fdb94) at
drivers/usb/gadget/composite.c:1660
#2 0xc024ae2c in udc_bind_to_driver (udc=0xc3a10ec0, driver=0xc39a85a0) at
drivers/usb/gadget/udc-core.c:272
#3 0xc024af40 in usb_gadget_probe_driver (driver=0xc04fdb94) at
drivers/usb/gadget/udc-core.c:337
#4 0xc024c718 in usb_composite_probe (driver=0xc04fdb6c) at
drivers/usb/gadget/composite.c:1793
#5 0xc04aac68 in init () at drivers/usb/gadget/ether.c:366
#6 0xc0008608 in do_one_initcall (fn=0xc04aac54 <init>) at init/main.c:690
#7 0xc0496318 in do_initcall_level () at init/main.c:761
#8 do_initcalls () at init/main.c:769
#9 do_basic_setup () at init/main.c:788
#10 kernel_init_freeable () at init/main.c:890
#11 0xc038e2e4 in kernel_init (unused=0xc39fe800) at init/main.c:822
#12 0xc0009320 in ret_from_fork () at arch/arm/kernel/entry-common.S:92
Backtrace stopped: frame did not save the PC
(gdb) p composite
$1 = (struct usb_composite_driver *) 0xc04fdb6c
(gdb) p *composite
$2 = {name = 0xc045e2d0 "g_ether", dev = 0xc04f46e0, strings = 0xc04f4988,
max_speed = USB_SPEED_SUPER, needs_serial = 0, bind = 0xc04aac70 <eth_bind>,
unbind = 0, disconnect = 0,
suspend = 0, resume = 0, gadget_driver = {function = 0xc045e2d0 "g_ether",
max_speed = USB_SPEED_SUPER, bind = 0xc024cf04 <composite_bind>, unbind =
0xc024cdc4 <composite_unbind>,
setup = 0xc024d498 <composite_setup>, disconnect = 0xc024c8ac
<composite_disconnect>, suspend = 0xc024c7f8 <composite_suspend>, resume =
0xc024c740 <composite_resume>, driver = {
name = 0xc045e2d0 "g_ether", bus = 0x0, owner = 0x0, mod_name = 0x0,
suppress_bind_attrs = false, of_match_table = 0x0, acpi_match_table = 0x0,
probe = 0, remove = 0, shutdown = 0,
suspend = 0, resume = 0, groups = 0x0, pm = 0x0, p = 0x0}}}
(gdb) p *cdev
$3 = {gadget = 0xc04f4020, req = 0xc39a85a0, config = 0x0, suspended = 0, desc
= {bLength = 0 '\000', bDescriptorType = 0 '\000', bcdUSB = 0, bDeviceClass = 0
'\000',
bDeviceSubClass = 0 '\000', bDeviceProtocol = 0 '\000', bMaxPacketSize0 = 0
'\000', idVendor = 0, idProduct = 0, bcdDevice = 0, iManufacturer = 0 '\000',
iProduct = 0 '\000',
iSerialNumber = 0 '\000', bNumConfigurations = 0 '\000'}, configs = {next =
0xc39a8680, prev = 0xc39a8680}, gstrings = {next = 0xc39a8688, prev =
0xc39a8688}, driver = 0x0,
next_string_id = 0 '\000', def_manufacturer = 0x0, deactivations = 0,
delayed_status = 0, lock = {{rlock = {raw_lock = {<No data fields>}}}}}
(gdb) p *gadget
$4 = {ops = 0xc03ba528, ep0 = 0xc04f413c, ep_list = {next = 0xc04f4180, prev =
0xc04f4260}, speed = USB_SPEED_FULL, max_speed = USB_SPEED_UNKNOWN,
sg_supported = 0, is_otg = 0,
is_a_peripheral = 0, b_hnp_enable = 0, a_hnp_support = 0, a_alt_hnp_support =
0, name = 0xc03ba370 "pxa27x_udc", dev = {parent = 0xc04d4328, p = 0xc39a8600,
kobj = {name = 0x0, entry = {
next = 0xc04f404c, prev = 0xc04f404c}, parent = 0x0, kset = 0xc3822be0,
ktype = 0xc04f2078, sd = 0x0, kref = {refcount = {counter = 1}},
state_initialized = 1, state_in_sysfs = 0,
state_add_uevent_sent = 0, state_remove_uevent_sent = 0, uevent_suppress
= 0}, init_name = 0xc045e180 "gadget", type = 0x0, mutex = {count = {counter =
1}, wait_lock = {{rlock = {
raw_lock = {<No data fields>}}}}, wait_list = {next = 0xc04f4078,
prev = 0xc04f4078}}, bus = 0x0, driver = 0x0, platform_data = 0x0, power =
{power_state = {event = -1},
can_wakeup = 0, async_suspend = 0, is_prepared = false, is_suspended =
false, ignore_children = false, early_init = true, lock = {{rlock = {raw_lock =
{<No data fields>}}}}, entry = {
next = 0xc04f4094, prev = 0xc04f4094}, completion = {done = 2147483647,
wait = {lock = {{rlock = {raw_lock = {<No data fields>}}}}, task_list = {next =
0xc04f40a0,
prev = 0xc04f40a0}}}, wakeup = 0x0, wakeup_path = false, syscore =
false, subsys_data = 0x0, qos = 0x0}, pm_domain = 0x0, dma_mask = 0x0,
coherent_dma_mask = 0, dma_parms = 0x0,
dma_pools = {next = 0xc04f40cc, prev = 0xc04f40cc}, dma_mem = 0x0, archdata
= {dma_ops = 0x0}, of_node = 0x0, acpi_node = {<No data fields>}, devt = 0, id
= 0, devres_lock = {{rlock = {
raw_lock = {<No data fields>}}}}, devres_head = {next = 0xc04f40e8,
prev = 0xc04f40e8}, knode_class = {n_klist = 0x0, n_node = {next = 0x0, prev =
0x0}, n_ref = {refcount = {
counter = 0}}}, class = 0x0, groups = 0x0, release = 0, iommu_group =
0x0}, out_epnum = 0, in_epnum = 0}
(gdb) p dev_attr_suspended
$5 = {attr = {name = 0xc045db28 "suspended", mode = 292}, show = 0xc024cde4
<composite_show_suspended>, store = 0}
(gdb) step
device_create_file (dev=0xc04f4040, attr=0xc04f3f94) at drivers/base/core.c:566
566 if (dev)
(gdb) n
567 error = sysfs_create_file(&dev->kobj, &attr->attr);
(gdb) p dev
$6 = (struct device *) 0xc04f4040
(gdb) p dev->kobj
$7 = {name = 0x0, entry = {next = 0xc04f404c, prev = 0xc04f404c}, parent = 0x0,
kset = 0xc3822be0, ktype = 0xc04f2078, sd = 0x0, kref = {refcount = {counter =
1}}, state_initialized = 1,
state_in_sysfs = 0, state_add_uevent_sent = 0, state_remove_uevent_sent = 0,
uevent_suppress = 0}
(gdb) p attr
$8 = (const struct device_attribute *) 0xc04f3f94
(gdb) p attr->attr
$9 = {name = 0xc045db28 "suspended", mode = 292}
--
Robert
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html