Hi all, Finally I have find the reasons of this issue. Shortly it is because of the bug of msub instruction emulation in qemu, which causes the uevent passage passed from kernel to udev is not correct. As a result the /dev/ashmem is not created.
The long version is here<http://vm-kernel.org/blog/2009/10/15/qemu-mips-msub-instruction-emulation-bug/> . yajin http://vm-kernel.org On Tue, Oct 13, 2009 at 5:19 PM, Dennis.Yxun <[email protected]> wrote: > HI yajin: > Not sure what's wrong since I haven't spent much time looking into this > issue. > I'm developing under real MIPS hardware platform, and it create ashmem > device node > successuflly. > The code base I'm using currently can be found at mips's webside[1], > and kernel branch is android-2.6.27 [2] > Hope helps, and also keep me informed > Thanks. > > Dennis > > [1] http://www.mipsandroid.org > [2] git://public.mipsandroid.com/kernel/common.git > > On Tue, Oct 13, 2009 at 5:02 PM, yajin <[email protected]> wrote: >> >> Hi all, >> >> I use the remote gdb to debug the ARM version init in emulator. When >> calling coldboot(fd, "/sys/devices") it will call make_device to make >> the devices. Following is the screenshot in remote gdb. But in MIPS >> version of init, coldboot(fd, "/sys/devices") does NOT call >> make_devides to create the devices. I will dig into this issue and >> find the bugs behind...... >> >> (gdb) c >> Continuing. >> >> Breakpoint 3, make_device (path=0xbee5a754 "/dev/log/main", block=0, >> major=10, >> minor=60) at system/core/init/devices.c:272 >> 272 { >> (gdb) >> >> >> yajin >> >> http://vm-kernel.org >> >> >> >> On Tue, Oct 13, 2009 at 4:36 PM, yajin <[email protected]> wrote: >> > Hi Dennis, >> > >> > Thanks for your instructions. >> > In fact, I have included the ashmem module in the kernel >> > configuration. I use the remote gdb to debug the kernel and find that >> > the ashmem_init is called. I find that ashmem is registered as a misc >> > device using misc_deregister(&ashmem_misc); >> > >> > With your help, I find the code patch in init is: >> > device_init-> >> > coldboot-> >> > do_coldboot-> >> > handle_device_fd->handle_device_event->handle_device_event >> > ->make_device. >> > >> > Then I use remote gdb to debug the init. However, the make_device >> > function are not called at all. >> > >> > Any more suggestions? >> > >> > yajin >> > >> > http://vm-kernel.org >> > >> > >> > >> > On Tue, Oct 13, 2009 at 10:36 AM, Dennis.Yxun <[email protected]> >> > wrote: >> >> HI yajin: >> >> Glad to see that you are play with MIPS ;-) >> >> I spend a few times looking into the code, and find it will creat >> >> all the >> >> device nodes during >> >> execution of init. >> >> system/core/init/ -> file devices.c -> handle_device_event >> >> ->make_device >> >> >> >> Dennis >> >> >> >> On Mon, Oct 12, 2009 at 6:07 PM, yajin <[email protected]> wrote: >> >>> >> >>> Hi all, >> >>> >> >>> Now I am working on adding goldfish target support to MIPS target so >> >>> that the MIPS users can have a SDK to play with. >> >>> >> >>> The kernel part works well until entering the userland. The init hangs >> >>> when calling ashmem_create_region. In function ashmem_create_region, >> >>> it will open /dev/ashmem and it return -1 and the errno is 19 which >> >>> means no such devices. I do not find where this device(/dev/ashmem) is >> >>> created? Can anyone tell me the code path of creating device /dev/ >> >>> ashmem? Thanks very much. >> >>> >> >>> int ashmem_create_region(const char *name, size_t size) >> >>> { >> >>> ...... >> >>> fd = open(ASHMEM_DEVICE, O_RDWR); >> >>> if (fd < 0) >> >>> return fd; >> >>> >> >>> ...... >> >>> } >> >>> >> >>> >> >>> yajin >> >>> http://vm-kernel.org/blog >> >>> >> >>> >> >>> >> >> >> >> >> >> >> >> >> >> > >> >> > > > > > --~--~---------~--~----~------------~-------~--~----~ unsubscribe: [email protected] website: http://groups.google.com/group/android-porting -~----------~----~----~----~------~----~------~--~---
