Date
1 - 8 of 8
HPET and IRQs
Tomasz Bursztyka
Hi,
I am currently trying to fix an issue with Zephyr running as UOS. The default configuration of Zephyr for acrn enables the LOAPIC timer, but there does not seem to be any mention of such timer in acrn. Unless I am missing something. When running zephyr with such timer, the timing get all bogus. 60 seconds looks like 5 seconds, etc... Timings are all off. As HPET is supported by acrn, I switched the timer to HPET. But now I have a new issue, acrn-dm displays: hpet t0 configured invalid irq 2, allowed_irqs 0xff000000 And nothing proceeds, since acrn defaults to 0, zephyr isr for hpet is never called. Indeed Zephyr sets HPET IRQ to 2, which seems to be wrong then for acrn . Which IRQ should HPET timer be configured to use on UOS side then? Thanks, Tomasz |
|
Yan, Like
Hi Tomasz,
toggle quoted message
Show quoted text
Please find my response inline. One question, are you running Zephyr on standard VM or RT VM? Thanks, Like -----Original Message-----[Like] LOAPIC is short for local APIC, right? In ACRN, we use LAPIC instead. When running zephyr with such timer, the timing get all bogus. 60 seconds[Like] As I know, zephyr won't do runtime timer calibration. You may need to do the calibration manually, and update the code to the correct timer frequency. [Like] HPET may use IRQ 24~31. As well, HPET calibration is needed, so we recommend you to use the LAPIC timer.
|
|
Tomasz Bursztyka
Hi Like,
VM or RT VM, I don't know. It did not occur to me there was an actual difference, I just used the launcher script for zephyr. I'll check. I could get LAPIC (which we indeed call LOAPIC) to work using -- lapic_pt option to acrn-dm. But then I am unable to stop/reset/delete the VM for some reason (even with --force on stop, it always returns -1). I'll still investigate about HPET. It "should" work, and if Zephyr is missing some support - runtime calibration that is - then it will be worth adding it. Thanks for the inputs, Tomasz |
|
Hi Tomasz,
toggle quoted message
Show quoted text
Additional to Like's comments, to calibrate the timer, if you have serial HV console, you can get the TSC frequency from the log. For example: calibrate_tsc, tsc_khz=1593600 Then you need to change the Zephyr code accordingly. In this example, set CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=1593600000 https://github.com/zephyrproject-rtos/zephyr/blob/master/boards/x86/acrn/acrn_defconfig#L13 Best Regards, Zide -----Original Message----- |
|
Yan, Like
Hi Tomasz,
toggle quoted message
Show quoted text
If you launched VM with --lapic_pt, then it's a RT VM. An RT VM is only allowed to be powered-off/reset when initiated inside the RT VM. The design principle here is that the other VMs (even the SOS VM) should not interfere RT VM to guarantee the RT performance. And there are some limitations as to RT VM, legacy devices are not supported, such as vHPET. Here are 2 documents for RT VM: https://projectacrn.github.io/latest/tutorials/rtvm_workload_design_guideline.html https://projectacrn.github.io/latest/tutorials/rtvm_performance_tips.html Thanks, Like -----Original Message----- |
|
toggle quoted message
Show quoted text
-----Original Message-----Thanks for the information Like. I was suspecting this but couldn't find a good reference about this in our documentation. The couple of documents you referenced above provide some good background information and useful tips on how to run RTVMs on ACRN. It does not really talk about what this limitation for example. It would be great to have some High-Level Design Guide that talk more extensively about the different types of User VMs: i.e. pre-launched, post-launched and RTVM vs. "normal" User VMs. Is this something we can plan to add? Thanks, Geoffroy
|
|
Yan, Like
I thought we have a document talking about the VM type definitions and constraints.
toggle quoted message
Show quoted text
Let me check first, we will add one if it's not there. -----Original Message----- |
|
Tomasz Bursztyka
Hi Zide,
toggle quoted message
Show quoted text
From which log? From kernel's one at least I get this: [ 0.000000] tsc: Detected 1094.000 MHz processor [ 0.000054] tsc: Detected 1094.400 MHz TSC, current tsc:18670612749 So far my attempts to tweak the sys clock config option did not change the result. Br, Tomasz Hi Tomasz, |
|