/* * linux/sound/oss/waveartist.h * * def file for Rockwell RWA010 chip set, as installed in Rebel.com NetWinder */ //registers #define CMDR 0 #define DATR 2 #define CTLR 4 #define STATR 5 #define IRQSTAT 12 //bit defs //reg STATR #define CMD_WE 0x80 #define CMD_RF 0x40 #define DAT_WE 0x20 #define DAT_RF 0x10 #define IRQ_REQ 0x08 #define DMA1 0x04 #define DMA0 0x02 //bit defs //reg CTLR #define CMD_WEIE 0x80 #define CMD_RFIE 0x40 #define DAT_WEIE 0x20 #define DAT_RFIE 0x10 #define RESET 0x08 #define DMA1_IE 0x04 #define DMA0_IE 0x02 #define IRQ_ACK 0x01 //commands #define WACMD_SYSTEMID 0x00 #define WACMD_GETREV 0x00 #define WACMD_INPUTFORMAT 0x10 //0-8S, 1-16S, 2-8U #define WACMD_INPUTCHANNELS 0x11 //1-Mono, 2-Stereo #define WACMD_INPUTSPEED 0x12 //sampling rate #define WACMD_INPUTDMA 0x13 //0-8bit, 1-16bit, 2-PIO #define WACMD_INPUTSIZE 0x14 //samples to interrupt #define WACMD_INPUTSTART 0x15 //start ADC #define WACMD_INPUTPAUSE 0x16 //pause ADC #define WACMD_INPUTSTOP 0x17 //stop ADC #define WACMD_INPUTRESUME 0x18 //resume ADC #define WACMD_INPUTPIO 0x19 //PIO ADC #define WACMD_OUTPUTFORMAT 0x20 //0-8S, 1-16S, 2-8U #define WACMD_OUTPUTCHANNELS 0x21 //1-Mono, 2-Stereo #define WACMD_OUTPUTSPEED 0x22 //sampling rate #define WACMD_OUTPUTDMA 0x23 //0-8bit, 1-16bit, 2-PIO #define WACMD_OUTPUTSIZE 0x24 //samples to interrupt #define WACMD_OUTPUTSTART 0x25 //start ADC #define WACMD_OUTPUTPAUSE 0x26 //pause ADC #define WACMD_OUTPUTSTOP 0x27 //stop ADC #define WACMD_OUTPUTRESUME 0x28 //resume ADC #define WACMD_OUTPUTPIO 0x29 //PIO ADC #define WACMD_GET_LEVEL 0x30 #define WACMD_SET_LEVEL 0x31 #define WACMD_SET_MIXER 0x32 #define WACMD_RST_MIXER 0x33 #define WACMD_SET_MONO 0x34 /* * Definitions for left/right recording input mux */ #define ADC_MUX_NONE 0 #define ADC_MUX_MIXER 1 #define ADC_MUX_LINE 2 #define ADC_MUX_AUX2 3 #define ADC_MUX_AUX1 4 #define ADC_MUX_MIC 5 /* * Definitions for mixer gain settings */ #define MIX_GAIN_LINE 0 /* line in */ #define MIX_GAIN_AUX1 1 /* aux1 */ #define MIX_GAIN_AUX2 2 /* aux2 */ #define MIX_GAIN_XMIC 3 /* crossover mic */ #define MIX_GAIN_MIC 4 /* normal mic */ #define MIX_GAIN_PREMIC 5 /* preamp mic */ #define MIX_GAIN_OUT 6 /* output */ #define MIX_GAIN_MONO 7 /* mono in */ int wa_sendcmd(unsigned int cmd); int wa_writecmd(unsigned int cmd, unsigned int arg); option>
path: root/net/dccp/input.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-01-29 13:50:06 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2017-01-29 13:50:06 -0800
commit39cb2c9a316e77f6dfba96c543e55b6672d5a37e (patch)
tree98fe974ee4e20121253de7f61fc8d01bdb3821c1 /net/dccp/input.c
parent2c5d9555d6d937966d79d4c6529a5f7b9206e405 (diff)
drm/i915: Check for NULL i915_vma in intel_unpin_fb_obj()
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 <daniel.vetter@intel.com> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Imre Deak <imre.deak@intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'net/dccp/input.c')