QEMU的本地APIC地址在哪里?

时间:2016-11-03 11:01:40

标签: x86 qemu

根据英特尔的文件,FEE0 0000HFEE0 03F0H是本地APIC的范围。但是,从QEMU控制台检查它,我只能在那里找到值0:

(qemu) x/128b 0xfee00000
fee00000: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00008: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00010: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00018: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00020: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00028: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00030: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00038: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00040: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00048: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00050: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00058: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00060: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00068: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00070: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00078: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

我检查了128个字节以查看是否有任何不同于0.至少,FEE0 0030H应包含不同的值,因为它是APIC版本所在的位置。

分页已禁用,因此没有虚拟内存;只是身体:

(qemu) info mem
PG disabled

但是,info lapic命令报告实际的初始值:

(qemu) info lapic 
dumping local APIC state for CPU 0 

LVT0     0x00008700 active-hi level                             ExtINT (vec 0)
LVT1     0x00008400 active-hi level                             NMI   
LVTPC    0x00010000 active-hi edge  masked                      Fixed  (vec 0)
LVTERR   0x00010000 active-hi edge  masked                      Fixed  (vec 0)
LVTTHMR  0x00010000 active-hi edge  masked                      Fixed  (vec 0)
LVTT     0x00030010 active-hi edge  masked         periodic     Fixed  (vec 16)
Timer    DCR=0x2 (divide by 8) initial_count = 4096
SPIV     0x000001ff APIC enabled, focus=off, spurious vec 255
ICR  0x000c4610 physical edge assert all
ICR2     0x00000000
ESR  0x00000000
ISR  (none)
IRR  (none)

那么,这些值在哪里?

2 个答案:

答案 0 :(得分:2)

模拟设备。当vCPU读取或写入这些地址时,它们由模拟的APIC处理。当GDB / QEMU控制台执行时,它可能无法通过该模拟器进行路由(模拟读取可以更改状态)。可能,gdb / QEMU控制台只是被路由到QEMU的RAM表示,其中不包括APIC。

答案 1 :(得分:0)

默认值为FEE0 0000H到FEE0 03F0H,但是它占据了整个4KiB页面。前16个字节保留用于APIC ID 0的内核的MSI中断(如果将其放置在MSI范围内,则是必需的)。其他255个内核的MSI中断位于页面边界的起始处,每个边界1页,直至FEEF F000H。可以在每个逻辑核心上调整LAPIC,因为每个逻辑核心都有一个here