Read '0' from local APIC timer registers.

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
wangt13
Posts: 20
Joined: Fri Nov 17, 2017 7:02 am

Read '0' from local APIC timer registers.

Post by wangt13 »

I am writing a Linux kernel module to read dump local APIC timer registers.
I am using Ubuntu 16.04 desktop on X86_64 platform.
X2APIC is disabled, and nohz=off in grub.cfg.

Here comes the code.

#include <linux/slab.h>
#include <linux/time.h>
#include <asm/string.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/hrtimer.h>
#include <linux/ktime.h>
#include <asm/apic.h>

void read_apic_timer(void)
{
printk("APIC_TDCR = 0x%x\n", apic_read(APIC_TDCR));
printk("APIC_TMICT = 0x%x\n", apic_read(APIC_TMICT));
printk("APIC_TMCCT = 0x%x\n", apic_read(APIC_TMCCT));
}

static int __init timer_init(void)
{
read_apic_timer();
return 0;
}

static void __exit timer_exit(void)
{
printk("module uninstalling\n");
}

module_init(timer_init);
module_exit(timer_exit);
MODULE_LICENSE("GPL");

And what I got is below,

[ 5619.047497] APIC_TDCR = 0x0
[ 5619.047498] APIC_TMICT = 0x0
[ 5619.047499] APIC_TMCCT = 0x0

I am not sure if it is correct or NOT.

Thanks,
wangt13
Posts: 20
Joined: Fri Nov 17, 2017 7:02 am

Re: Read '0' from local APIC timer registers.

Post by wangt13 »

Finally, I got the reason of 0s.
It is because, in my host, it supports TSC_DEADLINE mode, so Linux will configure APIC timer to this mode, without using TMICT/TMCCT/TMDCR.

Thanks,
Post Reply