Tasssadar / multirom

MultiROM for Nexus 7 and LG Optimus One
http://forum.xda-developers.com/showthread.php?t=2011403
GNU General Public License v3.0
416 stars 272 forks source link

multirom crashes (framebuffer issue?) #98

Closed z3ntu closed 8 years ago

z3ntu commented 8 years ago

When I try to compile multirom for the Fairphone 2, it crashes when trying to use the framebuffer (fb_update())

I already found out (with many INFO() statements) that multirom crashes in the fb_update() function in https://github.com/Tasssadar/multirom/blob/master/lib/framebuffer.c#L189 EDIT: the function fb_cpy_fb_with_rotation. (Line in source: https://github.com/Tasssadar/multirom/blob/master/lib/framebuffer.c#L280). 99% the memcpy function/statement crashes everything. EDIT2:: The last printed line (from my debug lines) is in https://github.com/Tasssadar/multirom/blob/master/lib/framebuffer.c#L289 (the memcpy(dst, src, fb.vi.xres_virtual * fb.vi.yres * PIXEL_SIZE); line)

Output of fb_dump_info():

[ 7.296819] multirom: Framebuffer: [ 7.300363] multirom: fi.smem_len: 16711680 [ 7.304504] multirom: fi.type: 0 [ 7.307756] multirom: fi.type_aux: 0 [ 7.311295] multirom: fi.visual: 2 [ 7.314660] multirom: fi.xpanstep: 1 [ 7.318219] multirom: fi.ypanstep: 1 [ 7.321834] multirom: fi.ywrapstep: 0 [ 7.325423] multirom: fi.line_length: 4352 [ 7.329501] multirom: fi.mmio_start: 0x0 [ 7.333472] multirom: fi.mmio_len: 0 [ 7.336968] multirom: fi.accel: 0 [ 7.340285] multirom: vi.xres: 1080 [ 7.343779] multirom: vi.yres: 1920 [ 7.347211] multirom: vi.xres_virtual: 1088 [ 7.351404] multirom: vi.yres_virtual: 3840 [ 7.355584] multirom: vi.xoffset: 0 [ 7.359015] multirom: vi.yoffset: 0 [ 7.362506] multirom: vi.bits_per_pixel: 32 [ 7.366696] multirom: vi.grayscale: 0 [ 7.370319] multirom: vi.red: offset: 24 len: 8 msb_right: 0 [ 7.375986] multirom: vi.green: offset: 16 len: 8 msb_right: 0 [ 7.381782] multirom: vi.blue: offset: 8 len: 8 msb_right: 0 [ 7.387443] multirom: vi.transp: offset: 0 len: 8 msb_right: 0 [ 7.393237] multirom: vi.nonstd: 0 [ 7.396604] multirom: vi.activate: 128 [ 7.400394] multirom: vi.height: 4294967295 [ 7.404505] multirom: vi.width: 4294967295 [ 7.408583] multirom: vi.accel_flags: 0

Some important-looking lines from last_kmsg:

[ 7.028942] multirom: /proc/config.gz is not available! [ 7.034200] multirom: /proc/atags was not found! [ 7.038878] multirom: Pixel format: 1080x1920 @ 32bpp [ 7.044820] msm_ehci_host msm_ehci_host: EHCI USB in low power mode [ 7.050102] multirom: Pixel format: RGBX_8888 [ 7.244227] mdss_dsi_on:682 Panel already on. [ 7.251830] multirom: Framebuffer implementation: Generic

I have set the pixel format to RGBX_8888 (with MR_PIXEL_FORMAT := "RGBX_8888" in the BoardConfig.mk).

EDIT: last_kmsg tells me something about "Unable to handle kernel paging request at virtual address"

[ 7.420969] Unable to handle kernel paging request at virtual address ��
[ 7.428068] pgd = �
[ 7.430756] [�� ] pgd=00000000 [ 7.434321] Internal error: Oops: [#1] PREEMPT SMP ARM [ 7.440220] Modules linked in: [ 7.443259] CPU: 1 Not tainted (3.4.0-z3ntu-lastkmsg-ge6e52d0 #1) [ 7.449681] PC is at 0x��
[ 7.452812] LR is at scheduler_tick+0x /0x
[ 7.457274] pc : [<�� >] lr : [< >] psr: � [ 7.457277] sp : � � ip : 00000 � fp : � �
[ 7.468730] r10: � � r9 : � � � r8 :
[ 7.473899] r7 : 0000000 r6 : � r5 : 0000000 r4 :
[ 7.480451] r3 : �� r2 : 00000000 r1 : � r0 :
[ 7.486925] Unable to handle kernel paging request at virtual address ��
[ 7.492589] Unable to handle kernel paging request at virtual address ��
[ 7.492593] pgd = �
[ 7.492597] [�� ]
pgd=00000000 [ 7.507582] pgd = �
[ 7.510272] [�� ] pgd=00000000 [ 8.020982] Unable to handle kernel paging request at virtual address ��
[ 8.020991] Unable to handle kernel paging request at virtual address ��
[ 8.020997] pgd = �
[ 8.021001] [�� ]
pgd=00000000 [ 8.040727] pgd = �
[ 8.043377] [�� ] *pgd=00000000

(and yes, the broken characters are in last_kmsg)

TWRP reports in /tmp/recovery.log about the framebuffer:

Starting the UI...fb0 reports (possibly inaccurate): vi.bits_per_pixel = 32 vi.red.offset = 24 .length = 8 vi.green.offset = 16 .length = 8 vi.blue.offset = 8 .length = 8 setting GGL_PIXEL_FORMAT_RGBX_8888 framebuffer: 3 (1080 x 1920)

EDIT2: Complete last_kmsg: http://pastebin.com/eiBFgL76

sndnvaps commented 8 years ago

you have to port kexec hardboot to you custom kernel

z3ntu commented 8 years ago

@sndnvaps is this really the issue...?

sndnvaps commented 8 years ago

i think, i was the one problem of you multirom mgr.

z3ntu commented 8 years ago

@sndnvaps What did you mean as I didn't really understood your last message?

z3ntu commented 8 years ago

See https://github.com/Tasssadar/multirom/issues/99#issuecomment-232130506 for a bit more information.

[    7.433124] multirom: Framebuffer:
[    7.436752] multirom: fi.smem_len: 16711680
[    7.440850] multirom: fi.type: 0
[    7.444061] multirom: fi.type_aux: 0
[    7.447681] multirom: fi.visual: 2
[    7.451003] multirom: fi.xpanstep: 1
[    7.454565] multirom: fi.ypanstep: 1
[    7.458181] multirom: fi.ywrapstep: 0
[    7.461771] multirom: fi.line_length: 4352
[    7.465867] multirom: fi.mmio_start: 0x0
[    7.469796] multirom: fi.mmio_len: 0
[    7.473312] multirom: fi.accel: 0
[    7.476631] multirom: vi.xres: 1080
[    7.480127] multirom: vi.yres: 1920
[    7.483559] multirom: vi.xres_virtual: 1088
[    7.487757] multirom: vi.yres_virtual: 3840
[    7.491931] multirom: vi.xoffset: 0
[    7.495362] multirom: vi.yoffset: 0
[    7.498853] multirom: vi.bits_per_pixel: 32
[    7.503042] multirom: vi.grayscale: 0
[    7.506665] multirom: vi.red: offset: 24 len: 8 msb_right: 0
[    7.512292] multirom: vi.green: offset: 16 len: 8 msb_right: 0
[    7.518163] multirom: vi.blue: offset: 8 len: 8 msb_right: 0
[    7.523748] multirom: vi.transp: offset: 0 len: 8 msb_right: 0
[    7.529618] multirom: vi.nonstd: 0
[    7.532950] multirom: vi.activate: 128
[    7.536747] multirom: vi.height: 4294967295
[    7.540852] multirom: vi.width: 4294967295
[    7.544931] multirom: vi.accel_flags: 0

I will try the MR_QCOM_OVERLAY_CUSTOM_PIXEL_FORMAT patch next (maybe tomorrow)

z3ntu commented 8 years ago

New kmsg, it skips multirom now (doesn't display it): http://pastebin.com/Pu2yaMxL and boots to Android

sndnvaps commented 8 years ago

@z3ntu i get the same issue.. multirom menu cannt show on boot .. just show the black screen .. after 30 sec,, bootam is show ..

z3ntu commented 8 years ago

I actually got it working now. /closed

sndnvaps commented 8 years ago

@z3ntu what you have done .. make it work for you device .?

z3ntu commented 8 years ago

https://github.com/z3ntu/android_device_fairphone_fp2/commit/ebc16e53be249a520e42b921c72ee77a2fefd9ff that was the last thing I had to do.