LINUX.ORG.RU

Регрессия в kernel


0

1

Доброго времени суток!

И снова я, и снова с ядром. Нашел регрессию (или что это такое) между 37-rc6 и 37-rc7: в arch/x86/kernel/hpet.c были сделаны следующие изменения: стали использоваться такие значения

#define HPET_MIN_CYCLES 128

#define HPET_MIN_PROG_DELTA (HPET_MIN_CYCLES + (HPET_MIN_CYCLES >> 1))

вместо 8 и 5000 соответственно. В результате на GA MA780G-UD3H (больше ни на чем попробовать не смог) в самом начале загрузки ядра система замирает на какое-то время (из замирания можно вывести передергиванием USB). Простановка в дефайны старых значений это зависание убирает (пробовал на 37-rc7) и на 3.0.

Теперь буду внимательно искать и курить документацию на HPET и думать над нормальными значениями, может кто-нибудь подсказать, куда смотреть?

И второе, если получится установить, что-же там должно быть, что делать дальше - писать в список рассылки lkml или куда-то еще?

Спасибо!

обнадежили в ядре :(

* HPETs are a complete disaster. The compare register is
* based on a equal comparison and neither provides a less
* than or equal functionality (which would require to take
* the wraparound into account) nor a simple count down event
* mode. Further the write to the comparator register is
* delayed internally up to two HPET clock cycles in certain
* chipsets (ATI, ICH9,10). Some newer AMD chipsets have even
* longer delays. We worked around that by reading back the
* compare register, but that required another workaround for
* ICH9,10 chips where the first readout after write can
* return the old stale value. We already had a minimum
* programming delta of 5us enforced, but a NMI or SMI hitting
* between the counter readout and the comparator write can
* move us behind that point easily. Now instead of reading
* the compare register back several times, we make the ETIME
* decision based on the following: Return ETIME if the
* counter value after the write is less than HPET_MIN_CYCLES
* away from the event or if the counter is already ahead of
* the event. The minimum programming delta for the generic
* clockevents code is set to 1.5 * HPET_MIN_CYCLES.

kirichenkoga
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.