Установка частоты HPET выше 10 кГц приводит к остановке прерывания

Я запускаю hpet_example.c (из https://github.com/torvalds/linux/blob/master/samples/timers/hpet_example.c) под Ubuntu 18.04 (ядро 4.15.0-124-generic) на Intel Xeon D-1577 1,30 ГГц или процессор на базе Intel Core i7.

Источник часов переключается на tsc согласно dmesg, но устройство / dev / hpet создано.

Все работает нормально, если я использую частоту 10 кГц или ниже, но если я увеличиваю ее до 20 кГц, я пытаюсь генерировать прерывание каждые 50 мксек, похоже, что ISR не запускается через случайное количество времени.

Чтобы собрать gcc -o hpet_example hpet_example.c

Для вызова:- ./hpet_example fasync /dev/hpet 5000 5000

Это устанавливает частоту 5 кГц и количество итераций 5000, поэтому через 1 секунду он должен завершиться. Установив его на 20000, кажется, что он зависает, поскольку цикл никогда не завершается из-за того, что ISR не увеличивает счетчик.

Кто-нибудь пытался запустить этот код раньше и имел аналогичную проблему? Если нет, не могли бы вы попробовать это, чтобы увидеть, возникает ли у вас такая же проблема, или какие-либо идеи о том, почему это может не работать?

Спасибо Крис

0 ответов

Другие вопросы по тегам