The whole user_priv thing is a mess, but as long as it's there, it
basically has to map 1:1 to the cur_ctx. Unfortunately we were setting
user_priv to some context, then that context could get deleted without
any draws/validations in it, leading user_priv to become NULL, with
cur_ctx still pointing at some old context. Then we wouldn't run the
switch logic, which in turn led to a NULL bufctx being dereferenced.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102349
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/*XXX: *cough* per-context pushbufs */
push = screen->base.pushbuf;
nv30->base.pushbuf = push;
- nv30->base.pushbuf->user_priv = &nv30->bufctx; /* hack at validate time */
- nv30->base.pushbuf->rsvd_kick = 16; /* hack in screen before first space */
- nv30->base.pushbuf->kick_notify = nv30_context_kick_notify;
+ push->kick_notify = nv30_context_kick_notify;
nv30->base.invalidate_resource_storage = nv30_invalidate_resource_storage;