My platform is the Overo Fire. Solution further down.
The sd slot and wireless/bluetooth are both connected to the mmc interface at: /sys/class/mmc_host/mmc0 and /sys/class/mmc_host/mmc1 the sd card located at mmc0 bootstraps just fine. When VOLD attempts to also bootstrap mmc1, segfault occurs: bootstrap_card(/sys/class/mmc_host/mmc1/mmc1:0001): I/DEBUG ( 888): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** I/DEBUG ( 888): Build fingerprint: 'generic/generic/generic/:1.5/ CUPCAKE/eng.demo.20090716.170157:eng/test-keys' I/DEBUG ( 888): pid: 887, tid: 887 >>> /system/bin/vold <<< I/DEBUG ( 888): signal 11 (SIGSEGV), fault addr 00000000 I/DEBUG ( 888): r0 00000000 r1 00020000 r2 00000000 r3 80808080 I/DEBUG ( 888): r4 00000000 r5 00000000 r6 beb40480 r7 000121cc I/DEBUG ( 888): r8 00000000 r9 00000000 10 00000000 fp 00000000 I/DEBUG ( 888): ip 00000000 sp beb40458 lr 0000a813 pc afe0e188 cpsr 40000010 I/DEBUG ( 888): #00 pc 0000e188 /system/lib/libc.so I/DEBUG ( 888): #01 pc 0000a810 /system/bin/vold I/DEBUG ( 888): #02 pc 0000a9be /system/bin/vold I/DEBUG ( 888): #03 pc 0000aa80 /system/bin/vold I/DEBUG ( 888): #04 pc 000097c4 /system/bin/vold I/DEBUG ( 888): #05 pc 0001fd6a /system/lib/libc.so I/DEBUG ( 888): #06 pc 0000bcb2 /system/lib/libc.so I/DEBUG ( 888): #07 pc b000157e /system/bin/linker I/DEBUG ( 888): stack: I/DEBUG ( 888): beb40418 000000dc I/DEBUG ( 888): beb4041c 00002bb0 this is the content of my vold.conf: volume_sdcard { ## This is the direct uevent device path to the SD slot on the device media_path /devices/platform/mmci-omap-hs.0/mmc_host/mmc0 media_type mmc mount_point /sdcard ums_path /devices/platform/usb_mass_storage/lun0 } To fix this, I kind of went around the issue all together since I didn't want to spend forever pinpointing the line that was causing the bootstrap process to segfault on the sdio wireless chip. First change is mandatory. Second change is not needed. --- a/system/core/vold/mmc.c 2009-07-02 16:15:08.000000000 -0400 +++ b/system/core/vold/mmc.c 2009-07-17 10:35:02.000000000 -0400 @@ -54,8 +54,14 @@ continue; sprintf(tmp, "%s/%s", SYSFS_CLASS_MMC_PATH, de->d_name); - if (mmc_bootstrap_controller(tmp)) + if (mmc_bootstrap_controller(tmp)) { LOG_ERROR("Error bootstrapping controller '%s' (%m)", tmp); + } + else { + //a controller has already been bootstrapped, lets stop trying to get more + //TODO: hack fix to get around segfault on boostrapping sdio card connected to mmc bus + break; + } } closedir(d); @@ -85,7 +91,8 @@ if ((!strcmp(de->d_name, "uevent")) || (!strcmp(de->d_name, "subsystem")) || (!strcmp(de->d_name, "device")) || - (!strcmp(de->d_name, "power"))) { + (!strcmp(de->d_name, "power")) || + (!strcmp(de->d_name, "slot_name"))) { continue; } I hope this saves people some time when trying to get VOLD to work certain systems. I don't know why VOLD is even attempting to bootstrap mmc1 when only mmc0 is clearly defined in the vold.conf file. Possibly a bug? --~--~---------~--~----~------------~-------~--~----~ unsubscribe: android-porting+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-porting -~----------~----~----~----~------~----~------~--~---