Op 27 aug 2008, om 22:57 heeft Steve Sakoman het volgende geschreven:

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 . . .

could you try removing /etc/asound.conf, it is set to dmix by default, which might screw things up.

regards,

Koen





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


Attachment: PGP.sig
Description: This is a digitally signed message part

Reply via email to