recent Maestro messages.
Pyun YongHyeon
pyunyh at gmail.com
Mon Jan 2 18:07:07 PST 2006
On Mon, Jan 02, 2006 at 10:28:56AM -0800, Julian Elischer wrote:
> Recently the MAestro attach code has started to spew out the following
> during boot.
>
> someone who knows pcm_addchan() should look to see it the locking in
> agg_attach()
> can be adjusted to avoid this error safely.
>
> =====================
>
> malloc(M_WAITOK) of "256", forcing M_NOWAIT with the following
> non-sleepable loc
> ks held:
> exclusive sleep mutex ESS Technology Maestro-2E (hardware status lock) r =
> 0 (0x
> c228be28) locked @
> /usr/src/sys/modules/sound/driver/maestro/../../../../dev/sou
> nd/pci/maestro.c:270
> KDB: stack backtrace:
> kdb_backtrace(1,e0,c10653c0,4,c0c209ec) at kdb_backtrace+0x29
> witness_warn(5,0,c089b071,c0840681,e0) at witness_warn+0x192
> uma_zalloc_arg(c10653c0,0,502) at uma_zalloc_arg+0x41
> malloc(d8,c0907860,502,c0c20a38,c062efe8) at malloc+0xb2
> devfs_alloc(c22c3800,0,c22c3780,c0c20a60,c062f0d4) at devfs_alloc+0x17
> make_dev_credv(c0ae0420,30004,0,0,0) at make_dev_credv+0x34
> make_dev(c0ae0420,30004,0,0,1b6) at make_dev+0x20
> pcm_chn_add(c228bc00,c22fad80,c228be00,0,0) at pcm_chn_add+0x14e
> pcm_addchan(c22ba600,1,c0ac4ca0,c228be00,c228be28) at pcm_addchan+0x36
> agg_attach(c22ba600) at agg_attach+0x553
> device_attach(c22ba600,c22ba880,c22ba600,c22ba380,0) at device_attach+0x58
> device_probe_and_attach(c22ba600) at device_probe_and_attach+0xe0
> bus_generic_attach(c22ba380,6,c229d7c0,1,c0b2c39c) at
> bus_generic_attach+0x16
> acpi_pci_attach(c22ba380) at acpi_pci_attach+0xd0
> device_attach(c22ba380,c228acf0,c22ba380,0,c223ea80) at device_attach+0x58
> device_probe_and_attach(c22ba380) at device_probe_and_attach+0xe0
> bus_generic_attach(c223ea80,c223ea80,0,c229d7c0,c22b5480) at
> bus_generic_attach+
> 0x16
> acpi_pcib_attach(c223ea80,c22b5494,0,c0c20c58,c066e3cc) at
> acpi_pcib_attach+0x12
> f
> acpi_pcib_acpi_attach(c223ea80) at acpi_pcib_acpi_attach+0xcf
> device_attach(c223ea80,c0c20ca0,c223ea80,c22b2c80,c223d600) at
> device_attach+0x5
> 8
> device_probe_and_attach(c223ea80) at device_probe_and_attach+0xe0
> bus_generic_attach(c223d600,103f,1016,c22a3468,4) at bus_generic_attach+0x16
> acpi_attach(c223d600) at acpi_attach+0x631
> device_attach(c223d600,0,c223d600,c223dd00,0) at device_attach+0x58
> device_probe_and_attach(c223d600) at device_probe_and_attach+0xe0
> bus_generic_attach(c223dd00,c223dd00,c223dd00,c0c20d40,c066a624) at
> bus_generic_
> attach+0x16
> nexus_attach(c223dd00) at nexus_attach+0x13
> device_attach(c223dd00,c0951fb4,c223dd00,c0923ed0,c28000) at
> device_attach+0x58
> device_probe_and_attach(c223dd00) at device_probe_and_attach+0xe0
> root_bus_configure(c0c20d88,c062b006,0,c1ec00,c1e000) at
> root_bus_configure+0x16
> configure(0,c1ec00,c1e000,0,c0446ce5) at configure+0x9
> mi_startup() at mi_startup+0x96
> begin() at begin+0x2c
I'm not surprised that maestro(4) would freeze system. As maestro(4)
invokes pci_set_powerstate() in suspend/resume/play/capture, it would
generates lots of LORs and it even calls msleep(9) with driver lock held.
In addition, DMA buffering used in maestro(4) is questionable and we
should cleanup this too.
I have a patch that partially addresses the issue but it still does
not fix other issues mentioned in kern/63204. As my system works
without problems, I don't know what caused this. :-(
http://people.freebsd.org/~yongari/maestro.c
http://people.freebsd.org/~yongari/maestro_reg.h
Captuing was not tested and wouldn't work.
--
Regards,
Pyun YongHyeon
More information about the freebsd-multimedia
mailing list