[Решено] Ядро 2.6.30-r1 и mplayer или скорее даже alsa

Несколько раз уже пересобирал ядро, но при просмотре фильмов в mplayer (gentoo-sources-2.6.30-r1) звук "заикается": нормально играет минуту и потом резко перескакивает на секунду, будто была задержка, а затем она восстановилась таким вот перескоком.
В итоге часть сказанных предложений в фильме просто не слышно. Но если загрузиться с более раннего ядра (gentoo-sources-2.6.29-r5) - все в порядке.
Ядро пересобирал как обычно.
make oldconfig && make menuconfig && make && make modules_install

В части аудио ничего не менялось. Если нужно могу приложить конфиги. Пробовал собирать как модулями, так и встроенными в ядро.

Такая проблема наблюдается только в mplayer и mpd. Их я тоже уже несколько раз пересобрал.
Теперь одно но - в xine/gxine все в порядке и, соответственно, в ядре 2.6.29 тоже

В части аудио ядро собрано как советуются в родной документации на сайте gentoo.org, модуль

PCI devices   --->
   <M> Intel/SiS/nVidia/AMD/ALi AC97 Controller

~amd64
материнская плата ASUS A8N5X
Multimedia audio controller: nVidia
Corporation CK804 AC'97 Audio Controller (модуль snd_intel8x0)

Никто не подскажет, что можно сделать еще?

1. мне кажется, что дело не

1. мне кажется, что дело не совсем в ядре, а в алсе, которую в него включили... попробуйте отключить алсу в ядре и поставить ее из портежей. можно также сперва попробовать узнать какая версия альсы включена в ядро и посмотреть на alsa-project.org какие баги после той версии исправлены
2. синхронизация в mplayer (и в xine вроде тоже) по умолчанию зависит от rtc. попробуйте поиграть с настройками mplayer в части возможных методик синхронизации видео со звуком
3. вы звук выводите через аналог или через оптику? если через оптику да еще и врежиме PassThrouth, то официально на nForce4 Audio эта фишка не работает. У меня в свое время в этом режиме запустился тока один фильм, который на середине повесил всю систему с Kernel Panic )))
4. вообще, когда переходишь с одной версии ядра на другую, то хорошо бы знать, что именно нового в новой версии ядра и насколько оно вам надо ;-)
5. выложите конфиги обоих ядер для сравнения, на всякий случай...

Вечером отвечу подробнее. Мне

Вечером отвечу подробнее.
Мне таки не нравится то, что в gxine все хорошо, в отличие от mplayer. А изменилось только ядро.
4. Обычно я читаю, вроде ничего насчет alsa не было замечено.

Что понравилось, скорость загрузки ядра увеличилась (3.2 - 3.6 сек)

На vanilla-sources-2.6.30-rc5

На vanilla-sources-2.6.30-rc5 всё работает замечательно, там ALSA ещё v 1.0.19. А уже в vanilla-sources-2.6.30 ALSA v 1.0.20, и абсолютно такая же хрень со звуком, и суспенды тупят. Из-за этого сижу на старом ядре. Есть надежда на vanilla-sources-2.6.31_rc1, может поправили уже, но еще не установил.
Я даже обновил

media-libs/alsa-lib-1.0.20-r1
media-sound/alsa-headers-1.0.20
media-sound/alsa-utils-1.0.20-r1

Не помогло.

Поддерживаю данный баг. У

Поддерживаю данный баг. У меня тоже после перехода на новое ядро наблюдается заикание с вопсроизведением в mplayer и audasious. В vlc и на старом ядре все ок.

попробуйте посмотреть логи на

попробуйте посмотреть логи на наличие ругани со стороны ядра на rtc... на сайте mplayer'a тоже про rtc было написано...

все что есть в логах [

все что есть в логах

[    1.418076] rtc_cmos 00:04: RTC can wake from S4
[    1.419405] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0
[    1.420697] rtc0: alarms up to one year, y3k, 242 bytes nvram
[    1.462820] rtc_cmos 00:04: setting system clock to 2009-06-30 17:59:57 UTC (1246384797)

Это выходит при загрузке ядра. Оно не отличается от 2.6.29

Похоже я не один

Патч такой --- diff --git

Патч такой

---
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
index 173bebf..8aa5687 100644
--- a/sound/pci/intel8x0.c
+++ b/sound/pci/intel8x0.c
@@ -356,8 +356,6 @@ struct ichdev {
         unsigned int position;
        unsigned int pos_shift;
        unsigned int last_pos;
-       unsigned long last_pos_jiffies;
-       unsigned int jiffy_to_bytes;
         int frags;
         int lvi;
         int lvi_frag;
@@ -844,7 +842,6 @@ static int snd_intel8x0_pcm_trigger(struct snd_pcm_substream *substream, int cmd
        case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
                val = ICH_IOCE | ICH_STARTBM;
                ichdev->last_pos = ichdev->position;
-               ichdev->last_pos_jiffies = jiffies;
                break;
        case SNDRV_PCM_TRIGGER_SUSPEND:
                ichdev->suspended = 1;
@@ -1048,7 +1045,6 @@ static int snd_intel8x0_pcm_prepare(struct snd_pcm_substream *substream)
                        ichdev->pos_shift = (runtime->sample_bits > 16) ? 2 : 1;
        }
        snd_intel8x0_setup_periods(chip, ichdev);
-       ichdev->jiffy_to_bytes = (runtime->rate * 4 * ichdev->pos_shift) / HZ;
        return 0;
 }

@@ -1073,19 +1069,23 @@ static snd_pcm_uframes_t snd_intel8x0_pcm_pointer(struct snd_pcm_substream *subs
                    ptr1 == igetword(chip, ichdev->reg_offset + ichdev->roff_picb))
                        break;
        } while (timeout--);
+       ptr = ichdev->last_pos;
        if (ptr1 != 0) {
                ptr1 <<= ichdev->pos_shift;
                ptr = ichdev->fragsize1 - ptr1;
                ptr += position;
-               ichdev->last_pos = ptr;
-               ichdev->last_pos_jiffies = jiffies;
-       } else {
-               ptr1 = jiffies - ichdev->last_pos_jiffies;
-               if (ptr1)
-                       ptr1 -= 1;
-               ptr = ichdev->last_pos + ptr1 * ichdev->jiffy_to_bytes;
-               ptr %= ichdev->size;
+               if (ptr < ichdev->last_pos) {
+                       unsigned int pos_base, last_base;
+                       pos_base = position / ichdev->fragsize1;
+                       last_base = ichdev->last_pos / ichdev->fragsize1;
+                       /* another sanity check; ptr1 can go back to full
+                        * before the base position is updated
+                        */
+                       if (pos_base == last_base)
+                               ptr = ichdev->last_pos;
+               }
        }
+       ichdev->last_pos = ptr;
        spin_unlock(&chip->reg_lock);
        if (ptr >= ichdev->size)
                return 0;
-- 

Теперь, если кто подскажет как его лучше наложить, буду весьма благодарен

Патч помог, теперь все

Патч помог, теперь все прекрасно. За 7 минут звук ни разу не прерывался.
Одно но, все изменения я сделал руками. Не мог бы кто-нибудь научить меня как правильно пропатчить ядро.

patch -p1 < mypatch
конечно хорошо, но тут количество отступов не совпало, пришлось вообще удалять и вставлять строки вручную
Как мне теперь самому сделать патч и потом наложить его, да и вообще в ebuild добавить, если не исправят к тому времени ошибку.

http://devmanual.gentoo.org/

http://devmanual.gentoo.org/
Делается довольно просто.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Судя по Changelog исправили

Судя по Changelog исправили багу в 2.6.30.1

Щас соберем и проверим.

Щас соберем и проверим.

Я собрал 2.6.31-rc1, со

Я собрал 2.6.31-rc1, со звуком проблем точно нет. Зато появилось то, чего раньше не было, много разных error, связанных с ACPI и еще кое-чем.

Собрал 2.6.30-r2 все работает

Собрал 2.6.30-r2 все работает без глюков.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".