/*
 * This header provides constants for the PRCMU bindings.
 *
 */

#ifndef _DT_BINDINGS_MFD_PRCMU_H
#define _DT_BINDINGS_MFD_PRCMU_H

/*
 * Clock identifiers.
 */
#define ARMCLK			0
#define PRCMU_ACLK		1
#define PRCMU_SVAMMCSPCLK 	2
#define PRCMU_SDMMCHCLK 	2  /* DBx540 only. */
#define PRCMU_SIACLK 		3
#define PRCMU_SIAMMDSPCLK 	3  /* DBx540 only. */
#define PRCMU_SGACLK 		4
#define PRCMU_UARTCLK 		5
#define PRCMU_MSP02CLK 		6
#define PRCMU_MSP1CLK 		7
#define PRCMU_I2CCLK 		8
#define PRCMU_SDMMCCLK 		9
#define PRCMU_SLIMCLK 		10
#define PRCMU_CAMCLK 		10 /* DBx540 only. */
#define PRCMU_PER1CLK 		11
#define PRCMU_PER2CLK 		12
#define PRCMU_PER3CLK 		13
#define PRCMU_PER5CLK 		14
#define PRCMU_PER6CLK 		15
#define PRCMU_PER7CLK 		16
#define PRCMU_LCDCLK 		17
#define PRCMU_BMLCLK 		18
#define PRCMU_HSITXCLK 		19
#define PRCMU_HSIRXCLK 		20
#define PRCMU_HDMICLK		21
#define PRCMU_APEATCLK 		22
#define PRCMU_APETRACECLK 	23
#define PRCMU_MCDECLK  	 	24
#define PRCMU_IPI2CCLK  	25
#define PRCMU_DSIALTCLK  	26
#define PRCMU_DMACLK  	 	27
#define PRCMU_B2R2CLK  	 	28
#define PRCMU_TVCLK  	 	29
#define SPARE_UNIPROCLK  	30
#define PRCMU_SSPCLK  	 	31
#define PRCMU_RNGCLK  	 	32
#define PRCMU_UICCCLK  	 	33
#define PRCMU_G1CLK             34 /* DBx540 only. */
#define PRCMU_HVACLK            35 /* DBx540 only. */
#define PRCMU_SPARE1CLK	 	36
#define PRCMU_SPARE2CLK	 	37

#define PRCMU_NUM_REG_CLOCKS  	38

#define PRCMU_RTCCLK  	 	PRCMU_NUM_REG_CLOCKS
#define PRCMU_SYSCLK  	 	39
#define PRCMU_CDCLK  	 	40
#define PRCMU_TIMCLK  	 	41
#define PRCMU_PLLSOC0  	 	42
#define PRCMU_PLLSOC1  	 	43
#define PRCMU_ARMSS  	 	44
#define PRCMU_PLLDDR  	 	45

/* DSI Clocks */
#define PRCMU_PLLDSI  	 	46
#define PRCMU_DSI0CLK 	  	47
#define PRCMU_DSI1CLK  	 	48
#define PRCMU_DSI0ESCCLK  	49
#define PRCMU_DSI1ESCCLK  	50
#define PRCMU_DSI2ESCCLK  	51

/* LCD DSI PLL - Ux540 only */
#define PRCMU_PLLDSI_LCD        52
#define PRCMU_DSI0CLK_LCD       53
#define PRCMU_DSI1CLK_LCD       54
#define PRCMU_DSI0ESCCLK_LCD    55
#define PRCMU_DSI1ESCCLK_LCD    56
#define PRCMU_DSI2ESCCLK_LCD    57

#define PRCMU_NUM_CLKS  	58

#endif
ype='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/cgit.cgi/linux/net-next.git/log/'>root</a>/<a href='/cgit.cgi/linux/net-next.git/log/net'>net</a>/<a href='/cgit.cgi/linux/net-next.git/log/net/sched'>sched</a>/<a href='/cgit.cgi/linux/net-next.git/log/net/sched/sch_choke.c'>sch_choke.c</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/cgit.cgi/linux/net-next.git/log/net/sched/sch_choke.c?showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Files</th><th class='left'>Lines</th></tr>
t.git/commit/net?id=39cb2c9a316e77f6dfba96c543e55b6672d5a37e'>net</a>/<a href='/cgit.cgi/linux/net-next.git/commit/net/sched?id=39cb2c9a316e77f6dfba96c543e55b6672d5a37e'>sched</a>/<a href='/cgit.cgi/linux/net-next.git/commit/net/sched/sch_htb.c?id=39cb2c9a316e77f6dfba96c543e55b6672d5a37e'>sch_htb.c</a></div><div class='content'><div class='cgit-panel'><b>diff options</b><form method='get'><input type='hidden' name='id' value='39cb2c9a316e77f6dfba96c543e55b6672d5a37e'/><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><table summary='commit info' class='commit-info'>
<tr><th>author</th><td>Linus Torvalds &lt;torvalds@linux-foundation.org&gt;</td><td class='right'>2017-01-29 13:50:06 -0800</td></tr>
<tr><th>committer</th><td>Linus Torvalds &lt;torvalds@linux-foundation.org&gt;</td><td class='right'>2017-01-29 13:50:06 -0800</td></tr>
<tr><th>commit</th><td colspan='2' class='oid'><a href='/cgit.cgi/linux/net-next.git/commit/net/sched/sch_htb.c?id=39cb2c9a316e77f6dfba96c543e55b6672d5a37e'>39cb2c9a316e77f6dfba96c543e55b6672d5a37e</a> (<a href='/cgit.cgi/linux/net-next.git/patch/net/sched/sch_htb.c?id=39cb2c9a316e77f6dfba96c543e55b6672d5a37e'>patch</a>)</td></tr>
<tr><th>tree</th><td colspan='2' class='oid'><a href='/cgit.cgi/linux/net-next.git/tree/?id=39cb2c9a316e77f6dfba96c543e55b6672d5a37e'>98fe974ee4e20121253de7f61fc8d01bdb3821c1</a> /<a href='/cgit.cgi/linux/net-next.git/tree/net/sched/sch_htb.c?id=39cb2c9a316e77f6dfba96c543e55b6672d5a37e'>net/sched/sch_htb.c</a></td></tr>
<tr><th>parent</th><td colspan='2' class='oid'><a href='/cgit.cgi/linux/net-next.git/commit/net/sched/sch_htb.c?id=2c5d9555d6d937966d79d4c6529a5f7b9206e405'>2c5d9555d6d937966d79d4c6529a5f7b9206e405</a> (<a href='/cgit.cgi/linux/net-next.git/diff/net/sched/sch_htb.c?id=39cb2c9a316e77f6dfba96c543e55b6672d5a37e&amp;id2=2c5d9555d6d937966d79d4c6529a5f7b9206e405'>diff</a>)</td></tr></table>
<div class='commit-subject'>drm/i915: Check for NULL i915_vma in intel_unpin_fb_obj()</div><div class='commit-msg'>I've seen this trigger twice now, where the i915_gem_object_to_ggtt()
call in intel_unpin_fb_obj() returns NULL, resulting in an oops
immediately afterwards as the (inlined) call to i915_vma_unpin_fence()
tries to dereference it.

It seems to be some race condition where the object is going away at
shutdown time, since both times happened when shutting down the X
server.  The call chains were different:

 - VT ioctl(KDSETMODE, KD_TEXT):

    intel_cleanup_plane_fb+0x5b/0xa0 [i915]
    drm_atomic_helper_cleanup_planes+0x6f/0x90 [drm_kms_helper]
    intel_atomic_commit_tail+0x749/0xfe0 [i915]
    intel_atomic_commit+0x3cb/0x4f0 [i915]
    drm_atomic_commit+0x4b/0x50 [drm]
    restore_fbdev_mode+0x14c/0x2a0 [drm_kms_helper]
    drm_fb_helper_restore_fbdev_mode_unlocked+0x34/0x80 [drm_kms_helper]
    drm_fb_helper_set_par+0x2d/0x60 [drm_kms_helper]
    intel_fbdev_set_par+0x18/0x70 [i915]
    fb_set_var+0x236/0x460
    fbcon_blank+0x30f/0x350
    do_unblank_screen+0xd2/0x1a0
    vt_ioctl+0x507/0x12a0
    tty_ioctl+0x355/0xc30
    do_vfs_ioctl+0xa3/0x5e0
    SyS_ioctl+0x79/0x90
    entry_SYSCALL_64_fastpath+0x13/0x94

 - i915 unpin_work workqueue:

    intel_unpin_work_fn+0x58/0x140 [i915]
    process_one_work+0x1f1/0x480
    worker_thread+0x48/0x4d0
    kthread+0x101/0x140

and this patch purely papers over the issue by adding a NULL pointer
check and a WARN_ON_ONCE() to avoid the oops that would then generally
make the machine unresponsive.

Other callers of i915_gem_object_to_ggtt() seem to also check for the
returned pointer being NULL and warn about it, so this clearly has
happened before in other places.

[ Reported it originally to the i915 developers on Jan 8, applying the
  ugly workaround on my own now after triggering the problem for the
  second time with no feedback.

  This is likely to be the same bug reported as

     https://bugs.freedesktop.org/show_bug.cgi?id=98829
     https://bugs.freedesktop.org/show_bug.cgi?id=99134

  which has a patch for the underlying problem, but it hasn't gotten to
  me, so I'm applying the workaround. ]

Cc: Daniel Vetter &lt;daniel.vetter@intel.com&gt;
Cc: Jani Nikula &lt;jani.nikula@linux.intel.com&gt;
Cc: Ville Syrjälä &lt;ville.syrjala@linux.intel.com&gt;
Cc: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Cc: Maarten Lankhorst &lt;maarten.lankhorst@linux.intel.com&gt;
Cc: Tvrtko Ursulin &lt;tvrtko.ursulin@intel.com&gt;
Cc: Imre Deak &lt;imre.deak@intel.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</div><div class='diffstat-header'><a href='/cgit.cgi/linux/net-next.git/diff/?id=39cb2c9a316e77f6dfba96c543e55b6672d5a37e'>Diffstat</a> (limited to 'net/sched/sch_htb.c')</div><table summary='diffstat' class='diffstat'>