New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 807099 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Feature



Sign in to add a comment

Add a softpipe graphics card for board bringup

Project Member Reported by diand...@chromium.org, Jan 30 2018

Issue description

When trying to bring up boards it's nice to be able to see the browser even before the GPU is up and running.

marcheu@ suggests a softpipe should be doable and hopefully not too hard.

Let's add support for that.
 
See  bug #807103  for why we wouldn't just use llvmpipe
I don't know if this is mesa's fault or something about my board (or its kernel config?), but when I tried using softpipe I got crashes:

(none) ~ # cat /var/log/ui/ui.LATEST 
[2432:2432:0101/160001.724119:ERROR:memory_pressure_monitor_chromeos.cc(122)] Cannot open kernel listener
libEGL warning: DRI2: failed to open msm (search paths /usr/lib/dri)
libEGL warning: No hardware driver found, falling back to software rendering
Received signal 11 SEGV_MAPERR 000000000000
#0 0x0000022d2190 <unknown>
#1 0x0000022d20d8 <unknown>
#2 0x0000f75ca2a0 <unknown>
[end of stack trace]
Calling _exit(1). Core file will not be generated.
libEGL warning: DRI2: failed to open msm (search paths /usr/lib/dri)
libEGL warning: No hardware driver found, falling back to software rendering
[2432:2432:0101/160002.081366:ERROR:input_method_manager_impl.cc(1031)] IMEEngine for "fgoepimhcoialccpbmpnnblemnepkkao" is not registered
[2432:2432:0101/160002.120835:ERROR:object_proxy.cc(626)] Failed to call method: org.chromium.flimflam.Manager.GetProperties: object_path= /: org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.flimflam was not provided by any .service files
[2432:2432:0101/160002.120971:ERROR:device_event_log_impl.cc(156)] [16:00:02.120] Network: shill_property_handler.cc:298 ManagerPropertiesCallback Failed: 0
[2432:2432:0101/160002.121084:ERROR:object_proxy.cc(626)] Failed to call method: org.chromium.flimflam.Manager.GetProperties: object_path= /: org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.flimflam was not provided by any .service files
[2432:2432:0101/160002.121135:ERROR:network_profile_handler.cc(83)] Manager properties returned from Shill don't contain the field Profiles
[2432:2432:0101/160002.121232:ERROR:device_event_log_impl.cc(156)] [16:00:02.121] Network: network_handler_callbacks.cc:84 SetTechnologiesProhibited Failed: org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.flimflam was not provided by any .service files
[2432:2432:0101/160002.121345:ERROR:object_proxy.cc(626)] Failed to call method: org.chromium.flimflam.Manager.GetProperties: object_path= /: org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.flimflam was not provided by any .service files
[2432:2432:0101/160002.121397:ERROR:network_sms_handler.cc(404)] NetworkSmsHandler: Failed to get manager properties.
[2432:2432:0101/160002.121465:ERROR:object_proxy.cc(626)] Failed to call method: org.chromium.flimflam.Manager.GetProperties: object_path= /: org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.flimflam was not provided by any .service files
device-enumerator: scan all dirs
  device-enumerator: scanning /sys/bus
  device-enumerator: scanning /sys/class
device-enumerator: scan all dirs
  device-enumerator: scanning /sys/bus
  device-enumerator: scanning /sys/class
[2432:2432:0101/160002.134150:ERROR:device_event_log_impl.cc(156)] [16:00:02.134] Network: network_handler_callbacks.cc:84 SetHostname Failed: Manager: org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.flimflam was not provided by any .service files
[2432:2432:0101/160002.144419:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb
[2432:2432:0101/160002.144562:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb
[2432:2432:0101/160002.144647:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb
[2432:2432:0101/160002.144704:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb
[2432:2432:0101/160002.144758:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb
[2432:2432:0101/160002.144849:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb
[2432:2432:0101/160002.144930:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb
[2432:2432:0101/160002.145039:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb
Received signal 11 SEGV_MAPERR 000000000000
#0 0x000002357190 <unknown>
#1 0x0000023570d8 <unknown>
#2 0x0000f78552a0 <unknown>
[end of stack trace]
Calling _exit(1). Core file will not be generated.
device-enumerator: scan all dirs
  device-enumerator: scanning /sys/bus
  device-enumerator: scanning /sys/class
Received signal 6
Received signal 6
#0 0x0000025a9190 <unknown>
#1 0x0000025a90d8 <unknown>
#2 0x0000f718f2a0 <unknown>
#3 0x0000f717fb36 <unknown>
#4 0x0000f71fa634 ppoll
#5 0x000001460c50 <unknown>
#6 0x0000014638ac <unknown>
#7 0x000002376bf4 #0 0x000001f98190<unknown> 
#8 0x000002377a20 <unknown>
#1<unknown> 
#9 0x00000237db880x 000001f980d8 <unknown>
#10<unknown> 
0x000002376b64 <unknown>
#11 0x000001035c1c <unknown>
#12 0x0000f717f8a0 #2 0x0000f71922a0 __libc_start_main
[end of stack trace]
Calling _exit(1). Core file will not be generated.
<unknown>
#3 0x0000f77de516 <unknown>
#4 0x0000f77d657c pthread_join
#5 0x000001fdfba2 <unknown>
#6 0x000001fe2e2e <unknown>
#7 0x000000ebcf78 <unknown>
#8 0x000000eb7392 <unknown>
#9 0x000000eb66ee <unknown>
#10 0x000000eb84d4 <unknown>
#11 0x000000eb320e <unknown>
#12 0x000001d66a20 <unknown>
#13 0x000001d6cb88 <unknown>
#14 0x000001d65b64 <unknown>
#15 0x000000a24c1c <unknown>
#16 0x0000f71828a0 __libc_start_main
[end of stack trace]
Calling _exit(1). Core file will not be generated.

OK, status update here:

---

1. The "signal 6" above might have been because I killed UI because it was spewing too much to the serial console.  Maybe ignore?

2. I managed to get this into the debugger with the following things in /etc/chrome_dev.conf:

--no-sandbox
--disable-gpu-watchdog
--gpu-startup-dialog

...once I did that then I could start chrome and look in /var/log/ui/ui.LATEST for the GPU process ID.  I could then attach to it on the device:

  gdb --pid=<pid_of_gpu_process>

...and then I could Ctrl-Z and send kill -SIGUSR1 <pid_of_gpu_process>

...and then "fg" back into gdb and continue a few times till it crashed.

...that gave me garbage, but then I managed to get the symbol files over for "kms_swrast_dri.so.debug".  They were in '/build/cheza/usr/lib/debug/usr/lib/dri/kms_swrast_dri.so.debug'.  I stuck them in the root filesystem in /usr/lib/debug/usr/lib/dri/ and tried gdb again.  I then got this track:

---

(gdb) bt
#0  0x00000000 in ?? ()
#1  0xf61affb0 in pipe_sampler_view_reference (ptr=0x84c8640, 
   view=<optimized out>) at ./util/u_inlines.h:159
#2  aaline_destroy (stage=0x84c8600) at draw/draw_pipe_aaline.c:760
#3  0xf61b1774 in draw_pipeline_destroy (draw=0x84e7600)
   at draw/draw_pipe.c:101
#4  0xf61ace20 in draw_destroy (draw=0x84e7600) at draw/draw_context.c:219
#5  0xf623bed4 in softpipe_destroy (pipe=0x8537000) at sp_context.c:76
#6  0xf60b7822 in st_destroy_context_priv (st=0xb7ac000, 
   destroy_pipe=<optimized out>) at state_tracker/st_context.c:284
#7  0xf60b76ba in st_destroy_context (st=0xb7ac000)
   at state_tracker/st_context.c:644
#8  0xf61a5a62 in dri_destroy_context (cPriv=<optimized out>)
   at dri_context.c:216
#9  0xf61a4da2 in driDestroyContext (pcp=0x851d080) at dri_util.c:506
#10 0xf6365d42 in ?? () from /usr/lib/libEGL.so.1

---

marcheu@ says: 

> there is a bug where the lifetime of some objects in mesa is buggy, i.e. they outlive the context needed to destroy them
> we have this worked around for llvmpipe and other drivers we use
> but not for softpipe of course
With the latest patches, AKA:

* https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/892301/7
  media-libs/mesa: add USE flag for softpipe

* https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/894852/4
  media-libs/mesa: Add sampler_view_destroy workaround for softpipe

I still get a crash.  Now I get:

Thread 1 "chrome" received signal SIGSEGV, Segmentation fault.
pipe_get_tile_rgba_format (pt=0x0, src=0x0, x=8208, y=<optimized out>, 
    w=134928384, h=134928508, format=372649984, p=0xaddbf800)
    at util/u_tile.c:447

(gdb) bt
#0  pipe_get_tile_rgba_format (pt=0x0, src=0x0, x=8208, y=<optimized out>, 
    w=134928384, h=134928508, format=372649984, p=0xaddbf800)
    at util/u_tile.c:447
#1  0xf62825b8 in sp_find_cached_tile (tc=0x80ad800, addr=...)
    at sp_tile_cache.c:609
#2  0xf626fcfe in sp_get_cached_tile (tc=0x0, x=1024, y=2048, 
    layer=<optimized out>) at ./sp_tile_cache.h:155
#3  blend_fallback (qs=0x80a50c0, quads=0xd3f64ac, nr=8) at sp_quad_blend.c:935
#4  0xf6276444 in flush_spans (setup=0xd3f4000) at sp_setup.c:251
#5  0xf627626c in subtriangle (setup=0x0, eleft=0x0, eright=0x400, lines=512, 
    viewport_index=0) at sp_setup.c:763
#6  0xf6276166 in sp_setup_tri (setup=<optimized out>, v0=0x1639f000, 
    v1=<optimized out>, v2=<optimized out>) at sp_setup.c:871
#7  0xf626f0c8 in sp_vbuf_draw_elements (vbr=<optimized out>, 
    indices=0xa0cc824, nr=<optimized out>) at sp_prim_vbuf.c:209
#8  0xf61e9de2 in draw_pt_emit (emit=<optimized out>, 
    vert_info=<optimized out>, prim_info=0xfff0532c) at draw/draw_pt_emit.c:197
#9  0xf61eb0f0 in emit (
    emit={void (struct pt_emit *)} 0xf61eb0ba <fetch_pipeline_generic+562>, 
    vert_info=<optimized out>, prim_info=<optimized out>)
    at draw/draw_pt_fetch_shade_pipeline.c:199
#10 fetch_pipeline_generic (middle=0x80be5f0, fetch_info=0xfff0534c, 
    in_prim_info=0xfff0532c) at draw/draw_pt_fetch_shade_pipeline.c:352
#11 0xf61ead50 in fetch_pipeline_run (middle=0x0, fetch_elts=<optimized out>, 
    fetch_count=<optimized out>, draw_elts=0x800, draw_count=6, prim_flags=0)
    at draw/draw_pt_fetch_shade_pipeline.c:398
#12 0xf61eee2e in vsplit_flush_cache (vsplit=0xa0cb800, flags=0)
    at draw/draw_pt_vsplit.c:79
#13 vsplit_segment_cache_ushort (vsplit=<optimized out>, spoken=0 '\000', 
    ispoken=0, close=0 '\000', iclose=0, flags=<optimized out>, 
    istart=<optimized out>, icount=<optimized out>)
    at draw/draw_pt_vsplit_tmp.h:170
#14 vsplit_segment_simple_ushort (vsplit=0xa0cb800, flags=<optimized out>, 
    istart=0, icount=<optimized out>) at draw/draw_pt_vsplit_tmp.h:179
#15 0xf61ee520 in vsplit_run_ushort (frontend=0xa0cb800, start=0, count=6)
    at draw/draw_split_tmp.h:110
#16 0xf61e9ae6 in draw_pt_arrays (draw=<optimized out>, prim=<optimized out>, 
    start=<optimized out>, count=<optimized out>) at draw/draw_pt.c:149
#17 0xf61e9992 in draw_vbo (draw=<optimized out>, info=<optimized out>)
    at draw/draw_pt.c:564
#18 0xf626d892 in softpipe_draw_vbo (pipe=0xa072000, info=<optimized out>)
    at sp_draw_arrays.c:144
#19 0xf60e8f72 in st_draw_vbo (ctx=0xd48f000, prims=<optimized out>, 
    nr_prims=1, ib=0xfff05578, index_bounds_valid=<optimized out>, 
    min_index=0, max_index=<optimized out>, tfb_vertcount=0x0, 
    stream=<optimized out>, indirect=0x0) at state_tracker/st_draw.c:227
#20 0xf60bf704 in vbo_validated_drawrangeelements (ctx=0xd48f000, 
    mode=<optimized out>, index_bounds_valid=0 '\000', start=<optimized out>, 
    end=<optimized out>, count=<optimized out>, type=<optimized out>, 
    indices=<optimized out>, basevertex=<optimized out>, 
    numInstances=<optimized out>, baseInstance=<optimized out>)
    at vbo/vbo_exec_array.c:925
#21 0xf60bdb32 in vbo_exec_DrawElements (mode=4, count=<optimized out>, 
    type=<optimized out>, indices=<optimized out>) at vbo/vbo_exec_array.c:1075

Project Member

Comment 7 by bugdroid1@chromium.org, Feb 2 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/84a7f85ccebbdd626f26e995818602ce49e42f39

commit 84a7f85ccebbdd626f26e995818602ce49e42f39
Author: Gurchetan Singh <gurchetansingh@chromium.org>
Date: Fri Feb 02 11:40:24 2018

media-libs/mesa: add USE flag for softpipe

There are 3 use flags that affect this ebuild:
   - llvm  (we sometimes need llvm, but not llvmpipe, i.e
	   --with-gallium-drivers=radeonsi --enable-llvm)
   - llvmpipe (we want to build llvmpipe driver, i.e
	       --with-gallium-drivers=swrast --enable-llvm)
   - softpipe (we want to build the softpipe driver, i.e
	       --with-gallium-drivers=swrast --disable-llvm)

BUG= chromium:807099 
TEST=modify variables, check configure output

Change-Id: I3177d241a50f91556b207249e965b5983e0adfe5
Reviewed-on: https://chromium-review.googlesource.com/892301
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Stéphane Marchesin <marcheu@chromium.org>

[rename] https://crrev.com/84a7f85ccebbdd626f26e995818602ce49e42f39/media-libs/mesa/mesa-17.2.3-r16.ebuild
[modify] https://crrev.com/84a7f85ccebbdd626f26e995818602ce49e42f39/media-libs/mesa/mesa-17.2.3.ebuild
[modify] https://crrev.com/84a7f85ccebbdd626f26e995818602ce49e42f39/media-libs/mesa/mesa-9999.ebuild

Labels: M-66
Status: Fixed (was: Untriaged)
crosreview.com/894852 was also part of this fix.

This is working now, so marking as Fixed.  Thanks!
...also: just in case some future search turns up this bug, that crash from #6 was due to the lack of forward ports of 4.4 patches to 4.14.  Namely crosreview.com/896229 and crosreview.com/896230.  

Sign in to add a comment