Eric,
I change amdk8_scan_root_bus to:
unsigned int amdk8_scan_root_bus(device_t root, unsigned int max)
{
unsigned reg;
uint32_t value;
/* Unmap all of the other pci busses */
printk_debug("\nbefore pci_scan_bus\n");
for(reg = 0xe0; reg <= 0xec; reg += 4) {
value = f1_read_config32(reg);
printk_debug("amdk8_scan_root_bus %0x = %0x max = %0x\n",
reg,value,max);
if((value>>24)>max)
f1_write_config32(reg, 0);
}
for(reg = 0xe0; reg <= 0xec; reg += 4) {
value = f1_read_config32(reg);
printk_debug("amdk8_scan_root_bus %0x = %0x max = %0x\n",
reg,value,max);
}
max = pci_scan_bus(&root->link[0], PCI_DEVFN(0x18, 0), 0xff, max);
printk_debug("after pci_scan_bus\n");
for(reg = 0xe0; reg <= 0xec; reg += 4) {
value = f1_read_config32(reg);
printk_debug("amdk8_scan_root_bus %0x = %0x max = %0x\n",
reg,value,max);
}
return max;
}
I think as least you only need to clear the regs that contain bigger bus
number than the next bus for scanning.
The result will be in the end.
The problems:
1. It can not access 8151 on CPU link0 and so can not scan it
2. The HT scan seems can not figure out and set the link and read/write
enable bit in e0. It set the e0 to 0x05050000
Regards
Yinghai Lu
Copying LinuxBIOS to ram.
Jumping to LinuxBIOS.
LinuxBIOS-1.1.52.0_Fallback Fri Dec 5 14:29:03 EST 2003 booting...
Finding PCI configuration type.
PCI: Using configuration type 1
Enumerating: AMD K8 Northbridge
Enumerating: AMD K8 Northbridge
Enumerating: AMD K8
Enumerating: AMD K8
Enumerating: AMD 8111
Enumerating buses...
before pci_scan_bus
amdk8_scan_root_bus e0 = 4000203 max = 0
amdk8_scan_root_bus e4 = 6050003 max = 0
amdk8_scan_root_bus e8 = 0 max = 0
amdk8_scan_root_bus ec = 0 max = 0
amdk8_scan_root_bus e0 = 0 max = 0
amdk8_scan_root_bus e4 = 0 max = 0
amdk8_scan_root_bus e8 = 0 max = 0
amdk8_scan_root_bus ec = 0 max = 0
PCI: pci_scan_bus for bus 0
PCI: 00:18.0 [1022/1100] enabled
PCI: 00:18.1 [1022/1101] enabled
PCI: 00:18.2 [1022/1102] enabled
PCI: 00:18.3 [1022/1103] ops
PCI: 00:18.3 [1022/1103] enabled
PCI: 00:19.0 [1022/1100] enabled
PCI: 00:19.1 [1022/1101] enabled
PCI: 00:19.2 [1022/1102] enabled
PCI: 00:19.3 [1022/1103] ops
PCI: 00:19.3 [1022/1103] enabled
amdk8_scan_chains max: 0 starting...
Hyper transport scan link: 2 max: 1
PCI: 01:01.0 [1022/7450] enabled next_unitid: 0003
PCI: 01:03.0 [1022/7460] enabled next_unitid: 0007
HyperT reset needed
PCI: pci_scan_bus for bus 1
PCI: 01:01.0 [1022/7450] bus ops
PCI: 01:01.0 [1022/7450] enabled
PCI: 01:01.1 [1022/7451] ops
PCI: 01:01.1 [1022/7451] enabled
PCI: 01:02.0 [1022/7450] bus ops
PCI: 01:02.0 [1022/7450] enabled
PCI: 01:02.1 [1022/7451] ops
PCI: 01:02.1 [1022/7451] enabled
PCI: 01:03.0 [1022/7460] enabled
PCI: 01:04.0 [1022/7468] bus ops
PCI: 01:04.0 [1022/7468] enabled
PCI: 01:04.1 [1022/7469] ops
PCI: 01:04.1 [1022/7469] enabled
PCI: 01:04.2 [1022/746a] enabled
PCI: 01:04.3 [1022/746b] ops
PCI: 01:04.3 [1022/746b] enabled
PCI: 01:04.5 [1022/746d] enabled
amd8111_enable dev: PCI: 01:04.6 lpc_dev: PCI: 01:04.0 index: 6 reg: ffff ->
ffbf done
PCI: 01:04.6 [ffff/ffff] disabled
PCI: pci_scan_bus for bus 2
PCI: 02:09.0 [14e4/16a7] ops
PCI: 02:09.0 [14e4/16a7] enabled
PCI: pci_scan_bus returning with max=02
PCI: pci_scan_bus for bus 3
PCI: pci_scan_bus returning with max=03
PCI: pci_scan_bus for bus 4
PCI: 04:00.0 [1022/7464] ops
PCI: 04:00.0 [1022/7464] enabled
PCI: 04:00.1 [1022/7464] ops
PCI: 04:00.1 [1022/7464] enabled
PCI: 04:00.2 [1022/7463] ops
PCI: 04:00.2 [1022/7463] enabled
amd8111_enable dev: PCI: 04:01.0 lpc_dev: PCI: 01:04.0 index: 9 reg: ffbf ->
fdbf done
PCI: 04:01.0 [ffff/ffff] disabled
PCI: 04:0b.0 [1095/3114] ops
PCI: 04:0b.0 [1095/3114] enabled
PCI: 04:0c.0 [104c/8023] ops
PCI: 04:0c.0 [104c/8023] enabled
PCI: pci_scan_bus returning with max=04
PCI: pci_scan_bus returning with max=04
Hyper transport scan link: 2 new max: 4
Hypertransport scan link done
Hyper transport scan link: 0 max: 5
Missing static device: PCI: 05:00.0
HyperT reset not needed
PCI: pci_scan_bus for bus 5
PCI: 05:00.0 [ffff/ffff/00ffff] has unknown header type ff, ignoring.
PCI: 05:00.0 No device operations
PCI: 05:01.0 [ffff/ffff/00ffff] has unknown header type ff, ignoring.
PCI: 05:01.0 No device operations
PCI: pci_scan_bus returning with max=05
Hyper transport scan link: 0 new max: 5
Hypertransport scan link done
amdk8_scan_chains max: 5 done
amdk8_scan_chains max: 5 starting...
amdk8_scan_chains max: 5 done
PCI: pci_scan_bus returning with max=05
after pci_scan_bus
amdk8_scan_root_bus e0 = 5050000 max = 5
amdk8_scan_root_bus e4 = 0 max = 5
amdk8_scan_root_bus e8 = 0 max = 5
amdk8_scan_root_bus ec = 0 max = 5
done
Allocating resources...
PCI: 05:00.0 missing read_resources
PCI: 05:01.0 missing read_resources
PCI: 05:00.0 missing read_resources
PCI: 05:01.0 missing read_resources
PCI: 04:01.0 missing read_resources
PCI: 04:01.0 missing read_resources
PCI: 04:01.0 missing read_resources
PCI: 01:04.6 missing read_resources
PCI: 01:04.6 missing read_resources
ASSIGN RESOURCES, bus 0
PCI: 05:00.0 missing read_resources
PCI: 05:01.0 missing read_resources
PCI: 00:18.0 c8 <- [0x00003000 - 0x00002fff] node 0 link 0 io
PCI: 05:00.0 missing read_resources
PCI: 05:01.0 missing read_resources
PCI: 00:18.0 80 <- [0xfec00000 - 0xfebfffff] node 0 link 0 mem
PCI: 01:04.6 missing read_resources
PCI: 00:18.0 c0 <- [0x00001000 - 0x00002fff] node 0 link 2 io
PCI: 01:04.6 missing read_resources
PCI: 00:18.0 b8 <- [0xfe900000 - 0xfebfffff] node 0 link 2 mem
ASSIGN RESOURCES, bus 5
PCI: 05:00.0 missing set_resources
PCI: 05:01.0 missing set_resources
ASSIGNED RESOURCES, bus 5
ASSIGN RESOURCES, bus 1
PCI: 01:01.0 1c <- [0x00002000 - 0x00001fff] bus 2 io
PCI: 01:01.0 24 <- [0xfeb00000 - 0xfeafffff] bus 2 prefmem
PCI: 01:01.0 20 <- [0xfe900000 - 0xfe9fffff] bus 2 mem
ASSIGN RESOURCES, bus 2
PCI: 02:09.0 10 <- [0xfe900000 - 0xfe90ffff] mem
ASSIGNED RESOURCES, bus 2
PCI: 01:01.1 10 <- [0xfeb00000 - 0xfeb00fff] mem
PCI: 01:02.0 1c <- [0x00002000 - 0x00001fff] bus 3 io
PCI: 01:02.0 24 <- [0xfeb00000 - 0xfeafffff] bus 3 prefmem
PCI: 01:02.0 20 <- [0xfeb00000 - 0xfeafffff] bus 3 mem
PCI: 01:02.1 10 <- [0xfeb01000 - 0xfeb01fff] mem
PCI: 04:01.0 missing read_resources
PCI: 01:03.0 1c <- [0x00001000 - 0x00001fff] bus 4 io
PCI: 04:01.0 missing read_resources
PCI: 01:03.0 24 <- [0xfeb00000 - 0xfeafffff] bus 4 prefmem
PCI: 04:01.0 missing read_resources
PCI: 01:03.0 20 <- [0xfea00000 - 0xfeafffff] bus 4 mem
ASSIGN RESOURCES, bus 4
PCI: 04:00.0 10 <- [0xfea04000 - 0xfea04fff] mem
PCI: 04:00.1 10 <- [0xfea05000 - 0xfea05fff] mem
PCI: 04:00.2 10 <- [0xfea08000 - 0xfea080ff] mem
PCI: 04:00.2 14 <- [0xfea09000 - 0xfea0901f] mem
PCI: 04:01.0 missing set_resources
PCI: 04:0b.0 10 <- [0x00001010 - 0x00001017] io
PCI: 04:0b.0 14 <- [0x00001030 - 0x00001033] io
PCI: 04:0b.0 18 <- [0x00001020 - 0x00001027] io
PCI: 04:0b.0 1c <- [0x00001040 - 0x00001043] io
PCI: 04:0b.0 20 <- [0x00001000 - 0x0000100f] io
PCI: 04:0b.0 24 <- [0xfea07000 - 0xfea073ff] mem
PCI: 04:0c.0 10 <- [0xfea06000 - 0xfea067ff] mem
PCI: 04:0c.0 14 <- [0xfea00000 - 0xfea03fff] mem
ASSIGNED RESOURCES, bus 4
PCI: 01:04.0 00 <- [0x00000000 - 0xffffffff] io
PCI: 01:04.0 00 <- [0x00000000 - 0xffffffff] mem
PCI: 01:04.1 20 <- [0x00002460 - 0x0000246f] io
PCI: 01:04.2 10 <- [0x00002440 - 0x0000245f] io
PCI: 01:04.5 10 <- [0x00002000 - 0x000020ff] io
PCI: 01:04.5 14 <- [0x00002400 - 0x0000243f] io
PCI: 01:04.6 missing set_resources
ASSIGNED RESOURCES, bus 1
ASSIGNED RESOURCES, bus 0
done.
Enabling resourcess...
PCI: 00:18.0 cmd <- 00
PCI: 05:00.0 missing enable_resources
PCI: 05:01.0 missing enable_resources
PCI: 01:01.0 bridge ctrl <- 0000
PCI: 01:01.0 cmd <- 07
PCI: 02:09.0 cmd <- 02
PCI: 01:01.1 cmd <- 06
PCI: 01:02.0 bridge ctrl <- 0000
PCI: 01:02.0 cmd <- 07
PCI: 01:02.1 cmd <- 06
PCI: 01:03.0 bridge ctrl <- 0000
PCI: 01:03.0 cmd <- 07
PCI: 04:00.0 cmd <- 02
PCI: 04:00.1 cmd <- 02
PCI: 04:00.2 cmd <- 02
PCI: 04:01.0 missing enable_resources
PCI: 04:0b.0 cmd <- 03
PCI: 04:0c.0 cmd <- 02
PCI: 01:04.0 cmd <- 0f
PCI: 01:04.1 cmd <- 01
PCI: 01:04.2 cmd <- 01
PCI: 01:04.3 cmd <- 00
PCI: 01:04.5 cmd <- 01
PCI: 01:04.6 missing enable_resources
PCI: 00:18.1 cmd <- 00
PCI: 00:18.2 cmd <- 00
PCI: 00:18.3 cmd <- 00
PCI: 00:19.0 cmd <- 00
PCI: 00:19.1 cmd <- 00
PCI: 00:19.2 cmd <- 00
PCI: 00:19.3 cmd <- 00
done.
Initializing devices...
PCI: 00:18.3 init
NB: Function 3 Misc Control.. done.
PCI: 00:19.3 init
NB: Function 3 Misc Control.. resetting cpu