Eric,
if (cpu_init_detected()) { asm volatile ("jmp __cpu_reset"); }
The cpu_init seems reset the memcontroller with opteron. (all HT links configuration are still there). So you can not just jmp to __cpu_reset.
There are two solution for it 1. init ram and then jump to __cpu_reset But the smbus_io_base may already changed by last normal boot. So should use assigned smbus_io_base, that need to change amd8111_early_smbus.c structure.
2. just issue another soft reset, --- amd8111 is in bus 1 now.
if (cpu_init_detected()) { #if 0 asm volatile ("jmp __cpu_reset"); #else /* cpu reset also reset the memtroller ???? need soft_reset to reset all except keep HT link freq and width */ distinguish_cpu_resets(); soft2_reset(); #endif }
Which one do you prefer to?
Regards
YH