关键点分析
如何查看设备有几个主桥
dmesg 可以看到(acpi_pci_root_add函数打印)出现了:
[ 0.181405] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-16]) # [PCIn] [bus 00-16], 那么00就是root的BUS号
[ 0.181405] ACPI: PCI Root Bridge [PCI1] (domain 0000 [bus 17-ff]) # [PCIn] [bus 17-fe], 那么17就是root的BUS号
......
可以看到 PC1 已经枚举到bus ff了,那么支持2个主桥
内核启动打印分析(重点)
acpi PNP0A08:00: [Firmware Info]: MMCONFIG for domain 0000 [bus 00-3f] only partially covers this bridge
### 主桥信息 (前边有分析,可能不止一个主桥,搜索 PCI host bridge 来查看
### 这里有 [bus 00-ff] 说明当前主桥下表已经覆盖了所有bus (在服务器上,将bus 可能挂载不同的主桥上)
PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [io 0x0000-0x03af window]
pci_bus 0000:00: root bus resource [io 0x03e0-0x0cf7 window]
pci_bus 0000:00: root bus resource [io 0x03b0-0x03df window]
pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window]
pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000dffff window]
pci_bus 0000:00: root bus resource [mem 0xe0000000-0xfec2ffff window]
pci_bus 0000:00: root bus resource [mem 0xfee00000-0xffffffff window]
pci_bus 0000:00: root bus resource [bus 00-ff]
### pci_scan_child_bus 开始扫描所有设备,打印分布在pci_setup_device 和 pci_device_add 中
### 中间也有部分会调用 pci_claim_resource
### 其实在pci_scan_child_bus->pci_scan_slot->pci_scan_single_device->pci_device_add
### ->pci_fixup_device->pci_do_fixups->quirk_piix4_acpi->quirk_io_region->pci_claim_resource
### 调用
pci 0000:00:00.0: [1022:1480] type 00 class 0x060000
pci 0000:00:00.2: [1022:1481] type 00 class 0x080600
pci 0000:00:01.0: [1022:1482] type 00 class 0x060000
pci 0000:00:01.1: [1022:1483] type 01 class 0x060400
pci 0000:00:01.1: enabling Extended Tags
pci 0000:00:01.1: PME# supported from D0 D3hot D3cold
pci 0000:00:01.3: [1022:1483] type 01 class 0x060400
pci 0000:00:01.3: enabling Extended Tags
pci 0000:00:01.3: PME# supported from D0 D3hot D3cold
pci 0000:00:02.0: [1022:1482] type 00 class 0x060000
pci 0000:00:03.0: [1022:1482] type 00 class 0x060000
pci 0000:00:03.1: [1022:1483] type 01 class 0x060400
pci 0000:00:03.1: enabling Extended Tags
pci 0000:00:03.1: PME# supported from D0 D3hot D3cold
pci 0000:00:04.0: [1022:1482] type 00 class 0x060000
pci 0000:00:05.0: [1022:1482] type 00 class 0x060000
pci 0000:00:07.0: [1022:1482] type 00 class 0x060000
pci 0000:00:07.1: [1022:1484] type 01 class 0x060400
pci 0000:00:07.1: enabling Extended Tags
pci 0000:00:07.1: PME# supported from D0 D3hot D3cold
pci 0000:00:08.0: [1022:1482] type 00 class 0x060000
pci 0000:00:08.1: [1022:1484] type 01 class 0x060400
pci 0000:00:08.1: enabling Extended Tags
pci 0000:00:08.1: PME# supported from D0 D3hot D3cold
pci 0000:00:08.2: [1022:1484] type 01 class 0x060400
pci 0000:00:08.2: enabling Extended Tags
pci 0000:00:08.2: PME# supported from D0 D3hot D3cold
pci 0000:00:08.3: [1022:1484] type 01 class 0x060400
pci 0000:00:08.3: enabling Extended Tags
pci 0000:00:08.3: PME# supported from D0 D3hot D3cold
pci 0000:00:14.0: [1022:790b] type 00 class 0x0c0500
pci 0000:00:14.3: [1022:790e] type 00 class 0x060100
pci 0000:00:18.0: [1022:1440] type 00 class 0x060000
pci 0000:00:18.1: [1022:1441] type 00 class 0x060000
pci 0000:00:18.2: [1022:1442] type 00 class 0x060000
pci 0000:00:18.3: [1022:1443] type 00 class 0x060000
pci 0000:00:18.4: [1022:1444] type 00 class 0x060000
pci 0000:00:18.5: [1022:1445] type 00 class 0x060000
pci 0000:00:18.6: [1022:1446] type 00 class 0x060000
pci 0000:00:18.7: [1022:1447] type 00 class 0x060000
pci 0000:01:00.0: [15b7:5006] type 00 class 0x010802
pci 0000:01:00.0: reg 0x10: [mem 0xf7b00000-0xf7b03fff 64bit]
pci 0000:01:00.0: reg 0x20: [mem 0xf7b04000-0xf7b040ff 64bit]
pci 0000:00:01.1: PCI bridge to [bus 01]
pci 0000:00:01.1: bridge window [mem 0xf7b00000-0xf7bfffff]
pci 0000:03:00.0: [1022:43d5] type 00 class 0x0c0330
pci 0000:03:00.0: reg 0x10: [mem 0xf73a0000-0xf73a7fff 64bit]
pci 0000:03:00.0: enabling Extended Tags
pci 0000:03:00.0: PME# supported from D3hot D3cold
pci 0000:03:00.1: [1022:43c8] type 00 class 0x010601
pci 0000:03:00.1: reg 0x24: [mem 0xf7380000-0xf739ffff]
pci 0000:03:00.1: reg 0x30: [mem 0xf7300000-0xf737ffff pref]
pci 0000:03:00.1: enabling Extended Tags
pci 0000:03:00.1: PME# supported from D3hot D3cold
pci 0000:03:00.2: [1022:43c6] type 01 class 0x060400
pci 0000:03:00.2: enabling Extended Tags
pci 0000:03:00.2: PME# supported from D3hot D3cold
pci 0000:00:01.3: PCI bridge to [bus 03-25]
pci 0000:00:01.3: bridge window [io 0xe000-0xffff]
pci 0000:00:01.3: bridge window [mem 0xf6000000-0xf73fffff]
pci 0000:00:01.3: bridge window [mem 0xe0000000-0xf1ffffff 64bit pref]
pci 0000:20:00.0: [1022:43c7] type 01 class 0x060400
pci 0000:20:00.0: enabling Extended Tags
pci 0000:20:00.0: PME# supported from D3hot D3cold
pci 0000:20:01.0: [1022:43c7] type 01 class 0x060400
pci 0000:20:01.0: enabling Extended Tags
pci 0000:20:01.0: PME# supported from D3hot D3cold
pci 0000:20:04.0: [1022:43c7] type 01 class 0x060400
pci 0000:20:04.0: enabling Extended Tags
pci 0000:20:04.0: PME# supported from D3hot D3cold
pci 0000:03:00.2: PCI bridge to [bus 20-25]
pci 0000:03:00.2: bridge window [io 0xe000-0xffff]
pci 0000:03:00.2: bridge window [mem 0xf6000000-0xf72fffff]
pci 0000:03:00.2: bridge window [mem 0xe0000000-0xf1ffffff 64bit pref]
pci 0000:20:00.0: PCI bridge to [bus 21]
pci 0000:22:00.0: [10ec:8168] type 00 class 0x020000
pci 0000:22:00.0: reg 0x10: [io 0xf000-0xf0ff]
pci 0000:22:00.0: reg 0x18: [mem 0xf7204000-0xf7204fff 64bit]
pci 0000:22:00.0: reg 0x20: [mem 0xf7200000-0xf7203fff 64bit]
pci 0000:22:00.0: supports D1 D2
pci 0000:22:00.0: PME# supported from D0 D1 D2 D3hot D3cold
pci 0000:20:01.0: PCI bridge to [bus 22]
pci 0000:20:01.0: bridge window [io 0xf000-0xffff]
pci 0000:20:01.0: bridge window [mem 0xf7200000-0xf72fffff]
pci 0000:25:00.0: [10de:1f82] type 00 class 0x030000
pci 0000:25:00.0: reg 0x10: [mem 0xf6000000-0xf6ffffff]
pci 0000:25:00.0: reg 0x14: [mem 0xe0000000-0xefffffff 64bit pref]
pci 0000:25:00.0: reg 0x1c: [mem 0xf0000000-0xf1ffffff 64bit pref]
pci 0000:25:00.0: reg 0x24: [io 0xe000-0xe07f]
pci 0000:25:00.0: reg 0x30: [mem 0xf7000000-0xf707ffff pref]
pci 0000:25:00.0: enabling Extended Tags
pci 0000:25:00.0: BAR 3: assigned to efifb
pci 0000:25:00.0: PME# supported from D0 D3hot D3cold
pci 0000:25:00.0: 8.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s x4 link at 0000:20:04.0 (capable of 126.016 Gb/s with 8 GT/s x16 link)
pci 0000:25:00.1: [10de:10fa] type 00 class 0x040300
pci 0000:25:00.1: reg 0x10: [mem 0xf7080000-0xf7083fff]
pci 0000:25:00.1: enabling Extended Tags
pci 0000:20:04.0: PCI bridge to [bus 25]
pci 0000:20:04.0: bridge window [io 0xe000-0xefff]
pci 0000:20:04.0: bridge window [mem 0xf6000000-0xf70fffff]
pci 0000:20:04.0: bridge window [mem 0xe0000000-0xf1ffffff 64bit pref]
pci 0000:26:00.0: [10ee:9032] type 00 class 0x058000
pci 0000:26:00.0: reg 0x10: [mem 0xf7a60000-0xf7a7ffff]
pci 0000:26:00.0: reg 0x18: [mem 0xf7a40000-0xf7a5ffff]
pci 0000:26:00.0: reg 0x30: [mem 0xfffff800-0xffffffff pref]
pci 0000:26:00.0: reg 0x164: [mem 0x00000000-0x00007fff]
pci 0000:26:00.0: VF(n) BAR0 space: [mem 0x00000000-0x0001ffff] (contains BAR0 for 4 VFs)
pci 0000:26:00.0: reg 0x16c: [mem 0x00000000-0x00003fff]
pci 0000:26:00.0: VF(n) BAR2 space: [mem 0x00000000-0x0000ffff] (contains BAR2 for 4 VFs)
pci 0000:26:00.1: [10ee:0000] type 00 class 0x058000
pci 0000:26:00.1: reg 0x10: [mem 0xf7a20000-0xf7a3ffff]
pci 0000:26:00.1: reg 0x18: [mem 0xf7a00000-0xf7a1ffff]
pci 0000:26:00.1: reg 0x164: [mem 0x00000000-0x00007fff]
pci 0000:26:00.1: VF(n) BAR0 space: [mem 0x00000000-0x0001ffff] (contains BAR0 for 4 VFs)
pci 0000:26:00.1: reg 0x16c: [mem 0x00000000-0x00003fff]
pci 0000:26:00.1: VF(n) BAR2 space: [mem 0x00000000-0x0000ffff] (contains BAR2 for 4 VFs)
pci 0000:00:03.1: PCI bridge to [bus 26]
pci 0000:00:03.1: bridge window [mem 0xf7a00000-0xf7afffff]
pci 0000:27:00.0: [1022:148a] type 00 class 0x130000
pci 0000:27:00.0: enabling Extended Tags
pci 0000:00:07.1: PCI bridge to [bus 27]
pci 0000:28:00.0: [1022:1485] type 00 class 0x130000
pci 0000:28:00.0: enabling Extended Tags
pci 0000:28:00.1: [1022:1486] type 00 class 0x108000
pci 0000:28:00.1: reg 0x18: [mem 0xf7600000-0xf76fffff]
pci 0000:28:00.1: reg 0x24: [mem 0xf7708000-0xf7709fff]
pci 0000:28:00.1: enabling Extended Tags
pci 0000:28:00.3: [1022:149c] type 00 class 0x0c0330
pci 0000:28:00.3: reg 0x10: [mem 0xf7500000-0xf75fffff 64bit]
pci 0000:28:00.3: enabling Extended Tags
pci 0000:28:00.3: PME# supported from D0 D3hot D3cold
pci 0000:28:00.4: [1022:1487] type 00 class 0x040300
pci 0000:28:00.4: reg 0x10: [mem 0xf7700000-0xf7707fff]
pci 0000:28:00.4: enabling Extended Tags
pci 0000:28:00.4: PME# supported from D0 D3hot D3cold
pci 0000:00:08.1: PCI bridge to [bus 28]
pci 0000:00:08.1: bridge window [mem 0xf7500000-0xf77fffff]
pci 0000:30:00.0: [1022:7901] type 00 class 0x010601
pci 0000:30:00.0: reg 0x24: [mem 0xf7900000-0xf79007ff]
pci 0000:30:00.0: enabling Extended Tags
pci 0000:30:00.0: PME# supported from D3hot D3cold
pci 0000:00:08.2: PCI bridge to [bus 30]
pci 0000:00:08.2: bridge window [mem 0xf7900000-0xf79fffff]
pci 0000:31:00.0: [1022:7901] type 00 class 0x010601
pci 0000:31:00.0: reg 0x24: [mem 0xf7800000-0xf78007ff]
pci 0000:31:00.0: enabling Extended Tags
pci 0000:31:00.0: PME# supported from D3hot D3cold
pci 0000:00:08.3: PCI bridge to [bus 31]
pci 0000:00:08.3: bridge window [mem 0xf7800000-0xf78fffff]
### 热插拔相关,linux-git\drivers\pnp\pnpacpi\core.c 中打印
pnp: PnP ACPI init
system 00:00: [mem 0xf8000000-0xfbffffff] has been reserved
system 00:00: Plug and Play ACPI device, IDs PNP0c01 (active)
system 00:01: [mem 0xfd000000-0xfd0fffff] has been reserved
system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active)
pnp 00:02: Plug and Play ACPI device, IDs PNP0b00 (active)
### 在 system_pnp_driver的probe中获取资源,
system 00:03: [io 0x0a00-0x0a0f] has been reserved
system 00:03: [io 0x0a10-0x0a1f] has been reserved
system 00:03: [io 0x0a20-0x0a2f] has been reserved
system 00:03: [io 0x0a30-0x0a3f] has been reserved
system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active)
pnp 00:04: [dma 0 disabled]
pnp 00:04: Plug and Play ACPI device, IDs PNP0400 (active)
pnp 00:05: [dma 0 disabled]
pnp 00:05: Plug and Play ACPI device, IDs PNP0501 (active)
system 00:06: [io 0x04d0-0x04d1] has been reserved
system 00:06: [io 0x040b] has been reserved
system 00:06: [io 0x04d6] has been reserved
system 00:06: [io 0x0c00-0x0c01] has been reserved
system 00:06: [io 0x0c14] has been reserved
system 00:06: [io 0x0c50-0x0c51] has been reserved
system 00:06: [io 0x0c52] has been reserved
system 00:06: [io 0x0c6c] has been reserved
system 00:06: [io 0x0c6f] has been reserved
system 00:06: [io 0x0cd0-0x0cd1] has been reserved
system 00:06: [io 0x0cd2-0x0cd3] has been reserved
system 00:06: [io 0x0cd4-0x0cd5] has been reserved
system 00:06: [io 0x0cd6-0x0cd7] has been reserved
system 00:06: [io 0x0cd8-0x0cdf] has been reserved
system 00:06: [io 0x0800-0x089f] has been reserved
system 00:06: [io 0x0b00-0x0b0f] has been reserved
system 00:06: [io 0x0b20-0x0b3f] has been reserved
system 00:06: [io 0x0900-0x090f] has been reserved
system 00:06: [io 0x0910-0x091f] has been reserved
system 00:06: [mem 0xfec00000-0xfec00fff] could not be reserved
system 00:06: [mem 0xfec01000-0xfec01fff] could not be reserved
system 00:06: [mem 0xfedc0000-0xfedc0fff] has been reserved
system 00:06: [mem 0xfee00000-0xfee00fff] has been reserved
system 00:06: [mem 0xfed80000-0xfed8ffff] could not be reserved
system 00:06: [mem 0xfec10000-0xfec10fff] has been reserved
system 00:06: [mem 0xff000000-0xffffffff] has been reserved
system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active)
pnp: PnP ACPI: found 7 devices
### ???
### 这部分没跟踪到,主要是 pci_claim_resource 和 pci_assign_resource, 没看到谁调用
### 其实在 pcibios_assign_resources->pcibios_allocate_rom_resources 中会操作option ROM相关
### fs_initcall(pcibios_assign_resources);
clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
pci 0000:26:00.0: can't claim BAR 6 [mem 0xfffff800-0xffffffff pref]: no compatible bridge window
pci_bus 0000:00: max bus depth: 3 pci_try_num: 4
pci 0000:00:01.1: PCI bridge to [bus 01]
pci 0000:00:01.1: bridge window [mem 0xf7b00000-0xf7bfffff]
pci 0000:20:00.0: PCI bridge to [bus 21]
pci 0000:20:01.0: PCI bridge to [bus 22]
pci 0000:20:01.0: bridge window [io 0xf000-0xffff]
pci 0000:20:01.0: bridge window [mem 0xf7200000-0xf72fffff]
pci 0000:20:04.0: PCI bridge to [bus 25]
pci 0000:20:04.0: bridge window [io 0xe000-0xefff]
pci 0000:20:04.0: bridge window [mem 0xf6000000-0xf70fffff]
pci 0000:20:04.0: bridge window [mem 0xe0000000-0xf1ffffff 64bit pref]
pci 0000:03:00.2: PCI bridge to [bus 20-25]
pci 0000:03:00.2: bridge window [io 0xe000-0xffff]
pci 0000:03:00.2: bridge window [mem 0xf6000000-0xf72fffff]
pci 0000:03:00.2: bridge window [mem 0xe0000000-0xf1ffffff 64bit pref]
pci 0000:00:01.3: PCI bridge to [bus 03-25]
pci 0000:00:01.3: bridge window [io 0xe000-0xffff]
pci 0000:00:01.3: bridge window [mem 0xf6000000-0xf73fffff]
pci 0000:00:01.3: bridge window [mem 0xe0000000-0xf1ffffff 64bit pref]
pci 0000:26:00.0: BAR 7: assigned [mem 0xf7a80000-0xf7a9ffff]
pci 0000:26:00.1: BAR 7: assigned [mem 0xf7aa0000-0xf7abffff]
pci 0000:26:00.0: BAR 9: assigned [mem 0xf7ac0000-0xf7acffff]
pci 0000:26:00.1: BAR 9: assigned [mem 0xf7ad0000-0xf7adffff]
pci 0000:26:00.0: BAR 6: assigned [mem 0xf7ae0000-0xf7ae07ff pref]
pci 0000:00:03.1: PCI bridge to [bus 26]
pci 0000:00:03.1: bridge window [mem 0xf7a00000-0xf7afffff]
pci 0000:00:07.1: PCI bridge to [bus 27]
pci 0000:00:08.1: PCI bridge to [bus 28]
pci 0000:00:08.1: bridge window [mem 0xf7500000-0xf77fffff]
pci 0000:00:08.2: PCI bridge to [bus 30]
pci 0000:00:08.2: bridge window [mem 0xf7900000-0xf79fffff]
pci 0000:00:08.3: PCI bridge to [bus 31]
pci 0000:00:08.3: bridge window [mem 0xf7800000-0xf78fffff]
pci_bus 0000:00: resource 4 [io 0x0000-0x03af window]
pci_bus 0000:00: resource 5 [io 0x03e0-0x0cf7 window]
pci_bus 0000:00: resource 6 [io 0x03b0-0x03df window]
pci_bus 0000:00: resource 7 [io 0x0d00-0xffff window]
pci_bus 0000:00: resource 8 [mem 0x000a0000-0x000bffff window]
pci_bus 0000:00: resource 9 [mem 0x000c0000-0x000dffff window]
pci_bus 0000:00: resource 10 [mem 0xe0000000-0xfec2ffff window]
pci_bus 0000:00: resource 11 [mem 0xfee00000-0xffffffff window]
pci_bus 0000:01: resource 1 [mem 0xf7b00000-0xf7bfffff]
pci_bus 0000:03: resource 0 [io 0xe000-0xffff]
pci_bus 0000:03: resource 1 [mem 0xf6000000-0xf73fffff]
pci_bus 0000:03: resource 2 [mem 0xe0000000-0xf1ffffff 64bit pref]
pci_bus 0000:20: resource 0 [io 0xe000-0xffff]
pci_bus 0000:20: resource 1 [mem 0xf6000000-0xf72fffff]
pci_bus 0000:20: resource 2 [mem 0xe0000000-0xf1ffffff 64bit pref]
pci_bus 0000:22: resource 0 [io 0xf000-0xffff]
pci_bus 0000:22: resource 1 [mem 0xf7200000-0xf72fffff]
pci_bus 0000:25: resource 0 [io 0xe000-0xefff]
pci_bus 0000:25: resource 1 [mem 0xf6000000-0xf70fffff]
pci_bus 0000:25: resource 2 [mem 0xe0000000-0xf1ffffff 64bit pref]
pci_bus 0000:26: resource 1 [mem 0xf7a00000-0xf7afffff]
pci_bus 0000:28: resource 1 [mem 0xf7500000-0xf77fffff]
pci_bus 0000:30: resource 1 [mem 0xf7900000-0xf79fffff]
pci_bus 0000:31: resource 1 [mem 0xf7800000-0xf78fffff]
NET: Registered protocol family 2
### 如果开启IOMMU,则给分配iommu group
pci 0000:00:00.2: AMD-Vi: IOMMU performance counters supported
pci 0000:00:01.0: Adding to iommu group 0
pci 0000:00:01.1: Adding to iommu group 1
pci 0000:00:01.3: Adding to iommu group 2
pci 0000:00:02.0: Adding to iommu group 3
pci 0000:00:03.0: Adding to iommu group 4
pci 0000:00:03.1: Adding to iommu group 5
pci 0000:00:04.0: Adding to iommu group 6
pci 0000:00:05.0: Adding to iommu group 7
pci 0000:00:07.0: Adding to iommu group 8
pci 0000:00:07.1: Adding to iommu group 9
pci 0000:00:08.0: Adding to iommu group 10
pci 0000:00:08.1: Adding to iommu group 11
pci 0000:00:08.2: Adding to iommu group 12
pci 0000:00:08.3: Adding to iommu group 13
pci 0000:00:14.0: Adding to iommu group 14
pci 0000:00:14.3: Adding to iommu group 14
pci 0000:00:18.0: Adding to iommu group 15
pci 0000:00:18.1: Adding to iommu group 15
pci 0000:00:18.2: Adding to iommu group 15
pci 0000:00:18.3: Adding to iommu group 15
pci 0000:00:18.4: Adding to iommu group 15
pci 0000:00:18.5: Adding to iommu group 15
pci 0000:00:18.6: Adding to iommu group 15
pci 0000:00:18.7: Adding to iommu group 15
pci 0000:01:00.0: Adding to iommu group 16
pci 0000:03:00.0: Adding to iommu group 17
pci 0000:03:00.1: Adding to iommu group 17
pci 0000:03:00.2: Adding to iommu group 17
pci 0000:20:00.0: Adding to iommu group 17
pci 0000:20:01.0: Adding to iommu group 17
pci 0000:20:04.0: Adding to iommu group 17
pci 0000:22:00.0: Adding to iommu group 17
pci 0000:25:00.0: Adding to iommu group 17
pci 0000:25:00.1: Adding to iommu group 17
pci 0000:26:00.0: Adding to iommu group 18
pci 0000:26:00.1: Adding to iommu group 18
pci 0000:27:00.0: Adding to iommu group 19
pci 0000:28:00.0: Adding to iommu group 20
pci 0000:28:00.1: Adding to iommu group 21
pci 0000:28:00.3: Adding to iommu group 22
pci 0000:28:00.4: Adding to iommu group 23
pci 0000:30:00.0: Adding to iommu group 24
pci 0000:31:00.0: Adding to iommu group 25
pci 0000:00:00.2: AMD-Vi: Found IOMMU cap 0x40
pci 0000:00:00.2: AMD-Vi: Extended features (0x58f77ef22294ade):