> Hope to get back to it later today if I can finish bringing up the new hw.
Had a few moments to look at this while waiting for a build.
This set of ioctl's are called at the failure point:
SNDRV_PCM_IOCTL_START:snd_pcm_common_ioctl1 2550 substream c7bdb900
SNDRV_PCM_IOCTL_PVERSION:snd_pcm_common_ioctl1 2514 substream 00000000
SNDRV_PCM_IOCTL_INFO:snd_pcm_common_ioctl1 2517 substream 00000000
Unable to handle kernel NULL pointer dereference at virtual address 00000000
So substream goes null sometime after the SNDRV_PCM_IOCTL_START but
before SNDRV_PCM_IOCTL_PVERSION . I believe that those calls are
generated by the following code in alsa-lib's
snd_pcm_direct_initialize_slave function in src/pcm/pcm_direct.c:
ret = snd_pcm_start(spcm); <=== THIS ROUTINE GENERATES A
SNDRV_PCM_IOCTL_START IOCTL
if (ret < 0) {
SNDERR("unable to start PCM stream");
return ret;
}
if (snd_pcm_poll_descriptors_count(spcm) != 1) {
SNDERR("unable to use hardware pcm with fd more than one!!!");
return ret;
}
snd_pcm_poll_descriptors(spcm, &fd, 1);
dmix->hw_fd = fd.fd;
save_slave_setting(dmix, spcm);
/* Currently, we assume that each dmix client has the same
* hw_params setting.
* If the arbitrary hw_parmas is supported in future,
* boundary has to be taken from the slave config but
* recalculated for the native boundary size (for 32bit
* emulation on 64bit arch).
*/
dmix->slave_buffer_size = spcm->buffer_size;
dmix->slave_period_size = spcm->period_size;
dmix->slave_boundary = spcm->boundary;
spcm->donot_close = 1;
{
int ver = 0;
ioctl(spcm->poll_fd, SNDRV_PCM_IOCTL_PVERSION, &ver); <===
THIS IS
THE FIRST POINT OF NULL SUBSTREAM
if (ver < SNDRV_PROTOCOL_VERSION(2, 0, 8))
dmix->shmptr->use_server = 1;
}
So this seems to narrow the area to search quite considerably! Back
to hw bringup . . .
Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html