MADT表以统一中断模型实现描述了系统中所有的中断。支持中断模型包括PC-AT兼容的双8259中断控制器,对于ARM处理器系统,GIC控制器。

MADT格式如下所示:

Field

Byte Length

Byte Offset

描述

Signature

4

0

‘APIC’

Length

4

4

MADT整个长度

Revision

1

8

5

Checksum

1

9

整个表的checksum

OEMID

6

10

OEM ID

OEM Table ID

8

16

厂商ID

OEM Revision

4

24

OEM版本

Creator ID

4

28

Vendor ID

Creator Revision

4

32

Vendor版本

Local Interrupt Controller Address

4

36

每个处理器可以访问它本地的中断控制器的32位物理地址

Flags

4

40

标志

Interrupt Controller Structure[n]

-

44

实现的中断控制器结构体

中断控制器结构体支持的类型很多,这里仅介绍GIC相关的中断控制器结构体类型。

1 GICD结构体

它以全局系统中断GSIV代表所有线中断。在ARM系统中GIC管理系统中的中断。每个中断由INTID区分。ACPI中GSIV对于外设中断一一映射到GIC INTID,可能为SPI或PPI。GICD结构体将GICD描述给OS。GICD结构体如下所示:

Field

Byte Length

Byte Offset

描述

Type

1

0

0xC

Length

1

1

24

Reserved

2

2

保留必须为0

GIC ID

4

4

GICD的硬件ID

Physical Base Address

8

8

GICD的物理基地址

System Vector Base

4

16

保留,必须为0

GIC version

1

20

0x4 - GICv3

Reserved

3

21

必须为0

2 GICC结构体

在GIC中断模型中,逻辑处理器要求在DSDT中有一个处理器Device Object,使用GICC结构体转换每个处理器GIC信息。

GICC结构体格式如下所示:

Field

Byte Length

Byte Offset

描述

Type

1

0

0xB

Length

1

1

80

Reserved

2

2

保留必须为0

GIC Interface Number

4

4

GIC的CPU接口编号。对于GICv3/v4,该域由平台实现

ACPI Processor UID

4

8

当处理器设备的_UID值匹配该域中的值时,OS将GICC结构与处理器Device Object关联

Flags

4

12

查看下面的GICC标志

Parking Protocol Version

4

16

ARM处理器Parking Protocol实现的版本

Performance Interrupt GSIV

4

20

GSIV用于性能monitor中断

Parked Address

8

24

处理器Parking Protocol mailbox的64位物理地址

Physical Base Address

8

32

该域保持64位物理地址,处理器可以通过该域访问GIC CPU接口

GICV

8

40

GIC虚拟CPU接口寄存器地址。

GICH

8

48

GIC虚拟接口控制块寄存器地址。

VGIC Maintenance interrupt

4

56

虚拟GIC维护中断的GSIV

GICR Base Address

8

60

该域保持对应的GICR的64位物理地址。如果所有GICR在always-on电源域,使用GICR结构体,则该域必须为0。如果GICR结构体存在于MADT中,则该域被忽略

MPIDR

8

68

该域遵守ARM架构的MPIDR格式

Processor Power Efficiency Class

1

76

描述相对应的处理器的相关的power efficiency。

Reserved

1

77

必须为0

SPE overflow Interrupt

2

78

Statistical Profiling Extension overflow GSIV

GICC CPU Interface标志:

GIC Flag

Bit Length

Bit Offset

描述

Enabled

1

0

如果为0,处理器不能使用,操作系统不会使用它

Performance Interface Mode

1

1

0电平触发 1边沿触发

VGIC Maintenance interrupt Mode Flags

1

2

0电平触发 1边沿触发

Reserved

29

3

必须为0

3 GICR结构体

GICR通过提供包含GICR页的物理地址使能GICR基地址的discovery。在MADT中可以有超过一个GICR结构体。GICR结构体仅在GICv3或更高版本且将所有GICR放置always-on电源域时使用。当GICR结构体存在时,OSPM忽略GICC结构体中GICR Base Address域。

Field

Byte Length

Byte Offset

描述

Type

1

0

0xE

Length

1

1

16

Reserved

2

2

保留,必须为0

Discovery Range Base Address

8

4

包含GICR的页的64位物理地址

Discovery Range Length

4

12

GICR Discovery页的长度

4 GIC ITS结构体

在GICv3/v4实现中GIC ITS是可选择的。GIC ITS结构体的格式如下所示:

Field

Byte Length

Byte Offset

描述

Type

1

0

0xF

Length

1

1

20

Reserved

2

2

保留,必须为0

GIC ITS ID

4

4

包含GICR的页的64位物理地址

Physical Base Address

8

8

ITS的64位物理地址

Reserved

4

16

保留,必须为0

GIC/ITS代码分析(1)MADT表相关推荐

  1. GIC/ITS代码分析(0)GIC/ITS框架介绍

    结合GIC芯片手册,计划分多次对GIC/ITS代码进行分析,加深对GIC/ITS代码的理解. 在分析代码之前,需要对GIC/ITS作简要介绍,包括GIC/ITS在系统中的位置,GIC/ITS硬件的介绍 ...

  2. GIC/ITS代码分析(2)GICv3驱动初始化

    这里我们介绍GICv3驱动的基础框架,后续再介绍GICv4的支持.GICv3驱动在文件drivers/irqchip/irq-gic-v3.c中.同时仅介绍ACPI方式下GICv3驱动. 该驱动由宏I ...

  3. GIC/ITS代码分析(4)中断的分配/映射及注册

    本章节分析常用的中断分配/映射及注册函数,对这个过程有个基本的理解.后续针对不同的中断使用实例作更详细介绍. 1 中断的分配/映射 它主要根据硬件中断号hwirq,分配virq,建立起映射,然后请求中 ...

  4. GIC/ITS代码分析(3)ITS驱动初始化

    这里对ITS再作简要介绍.在GICv3中,外设通过写GITS_TRANSLATER,根据所写内容解析出device_id和event_id,根据device_id找到设备所对应的Device Tabl ...

  5. GIC/ITS代码分析(8)中断应用实例之SGI中断

    SGI中断也称IPI中断,即处理器间中断,一个处理器可以向其他处理器发送中断,以达到目标处理器执行某种事情. 如上所示,cpu0通过写GICD寄存器让cpu2上产生SGI中断. 在ARM64系统中,硬 ...

  6. GIC/ITS代码分析(13)LPI中断虚拟化之KVM中ITS设备的模拟

    1 ITS设备的注册 ITS设备和GIC设备通过函数kvm_register_device_ops()注册不同的操作函数,如下所示: 2 系统调用KVM_CREATE_DEVICE 在QEMU中会调用 ...

  7. GIC/ITS代码分析(12)LPI中断虚拟化之QEMU中ITS设备的模拟

    QEMU中实现ITS设备模拟在文件hw/intc/arm_gicv3_its_kvm.c中实现.初始化如下: 过程如下: 定义ITS设备的具现化接口kvm_arm_its_realize(): 设备设 ...

  8. php table转json,html table表数据转Json格式示例代码分析

    本文为大家介绍下html table表数据转Json格式,下面有个不错的示例,大家可以参考下 代码如下: var keysArr = new Array("key0", " ...

  9. Linux GIC代码分析

    一.前言 GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器,其architecture specification目前有四个版本,V1-V4(V ...

最新文章

  1. FastAI 课程学习笔记 lesson 1:宠物图片分类
  2. 钻井缸套排量_川庆钻探||合理化建议成果展示:用陶瓷代替金属,缸套使用寿命延长了10倍...
  3. resumable oracle,Oracle的Resumable特性
  4. 投资83亿!“双一流”高校异地落户,传来新消息!
  5. mysql binlog 恢复 表_MySQL通过Binlog恢复删除的表
  6. (chap5 web服务器) 虚拟主机
  7. 架构师养成之道-01-知识图谱
  8. 《复杂》读书笔记(part2)--混沌与逻辑斯蒂映射
  9. ABP vNext微服务架构详细教程——结束语
  10. 根据用户名或者厂商名称生成相关的弱口令
  11. python基础编程语法-Python基础语法学习笔记
  12. set-cookie无法存入到浏览器cookie问题汇总
  13. Matlab实现Monte Carlo期权定价
  14. 货币金融学(4): 商业银行业务/央行
  15. 互联网日报 | 5月18日 星期二 | 中国移动启动A股上市;京东物流启动全球招股;快手发布首款自研手游产品...
  16. 小马虎想用计算机计算396乘19,四年级上册数学精选练习题
  17. httpc客户端API
  18. 易语言多线程崩溃解决的原因
  19. Flutter——Flutter初探与Dart基础
  20. Linux下的SMB服务(samba服务器)

热门文章

  1. 案例:自动登录12306
  2. Android传感器、语音识别、定位系统、Google Map API、快捷方式、widget编程总结及示例
  3. 2022-06-23 JVM学习
  4. 支持向量机检测DGA
  5. 前端面试题整理汇总(一)
  6. FP-Tree频繁模式树算法
  7. CTFlearn-misc(fore/prog)-wp(3)
  8. 基于注解的Excel导出万能模板
  9. 称为超级计算机,怎样的计算机被称为“巨型计算机”呢?
  10. 外置MOS 开关型 PWM调光 降压恒流驱动芯片