Fix AMD UMA for RS780
In commit 6b5eb1cc2d
setup of
UMA memory region was moved to happen at a later state and
this broke UMA with RS780 southbridge.
Share the TOP_MEM and UMA settings before any of the PCI or CPU
scanning takes place.
Change-Id: I9cae1fc2948cbccede58d099faf1dfe49e9df303
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/1488
Tested-by: build bot (Jenkins)
Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Reviewed-by: Dave Frodin <dave.frodin@se-eng.com>
Reviewed-by: Anton Kochkov <anton.kochkov@gmail.com>
This commit is contained in:
parent
71c7a3fdc3
commit
87213b655e
|
@ -923,11 +923,6 @@ static void amdfam10_domain_set_resources(device_t dev)
|
||||||
u32 reset_memhole = 1;
|
u32 reset_memhole = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
setup_bsp_ramtop();
|
|
||||||
#if CONFIG_GFXUMA
|
|
||||||
#error Northbridge does not set uma_memory_base or uma_memory_size.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if CONFIG_PCI_64BIT_PREF_MEM
|
#if CONFIG_PCI_64BIT_PREF_MEM
|
||||||
|
|
||||||
for (link = dev->link_list; link; link = link->next) {
|
for (link = dev->link_list; link; link = link->next) {
|
||||||
|
@ -1439,6 +1434,19 @@ static struct device_operations cpu_bus_ops = {
|
||||||
|
|
||||||
static void root_complex_enable_dev(struct device *dev)
|
static void root_complex_enable_dev(struct device *dev)
|
||||||
{
|
{
|
||||||
|
static int done = 0;
|
||||||
|
|
||||||
|
/* Do not delay UMA setup, as a device on the PCI bus may evaluate
|
||||||
|
the global uma_memory variables already in its enable function. */
|
||||||
|
if (!done) {
|
||||||
|
setup_bsp_ramtop();
|
||||||
|
#if CONFIG_GFXUMA
|
||||||
|
#error Northbridge does not set uma_memory_base or uma_memory_size.
|
||||||
|
setup_uma_memory();
|
||||||
|
#endif
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set the operations if it is a special bus type */
|
/* Set the operations if it is a special bus type */
|
||||||
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
||||||
dev->ops = &pci_domain_ops;
|
dev->ops = &pci_domain_ops;
|
||||||
|
|
|
@ -601,9 +601,6 @@ static void domain_set_resources(device_t dev)
|
||||||
u32 reset_memhole = 1;
|
u32 reset_memhole = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
setup_bsp_ramtop();
|
|
||||||
setup_uma_memory();
|
|
||||||
|
|
||||||
#if CONFIG_PCI_64BIT_PREF_MEM
|
#if CONFIG_PCI_64BIT_PREF_MEM
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "adsr - CONFIG_PCI_64BIT_PREF_MEM is true.\n");
|
printk(BIOS_DEBUG, "adsr - CONFIG_PCI_64BIT_PREF_MEM is true.\n");
|
||||||
|
@ -914,6 +911,16 @@ static struct device_operations cpu_bus_ops = {
|
||||||
static void root_complex_enable_dev(struct device *dev)
|
static void root_complex_enable_dev(struct device *dev)
|
||||||
{
|
{
|
||||||
printk(BIOS_DEBUG, "\nFam12h - northbridge.c - root_complex_enable_dev - Start.\n");
|
printk(BIOS_DEBUG, "\nFam12h - northbridge.c - root_complex_enable_dev - Start.\n");
|
||||||
|
static int done = 0;
|
||||||
|
|
||||||
|
/* Do not delay UMA setup, as a device on the PCI bus may evaluate
|
||||||
|
the global uma_memory variables already in its enable function. */
|
||||||
|
if (!done) {
|
||||||
|
setup_bsp_ramtop();
|
||||||
|
setup_uma_memory();
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set the operations if it is a special bus type */
|
/* Set the operations if it is a special bus type */
|
||||||
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
||||||
dev->ops = &pci_domain_ops;
|
dev->ops = &pci_domain_ops;
|
||||||
|
|
|
@ -564,9 +564,6 @@ static void domain_set_resources(device_t dev)
|
||||||
u32 reset_memhole = 1;
|
u32 reset_memhole = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
setup_bsp_ramtop();
|
|
||||||
setup_uma_memory();
|
|
||||||
|
|
||||||
#if CONFIG_PCI_64BIT_PREF_MEM
|
#if CONFIG_PCI_64BIT_PREF_MEM
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "adsr - CONFIG_PCI_64BIT_PREF_MEM is true.\n");
|
printk(BIOS_DEBUG, "adsr - CONFIG_PCI_64BIT_PREF_MEM is true.\n");
|
||||||
|
@ -895,7 +892,18 @@ static struct device_operations cpu_bus_ops = {
|
||||||
.scan_bus = cpu_bus_scan,
|
.scan_bus = cpu_bus_scan,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void root_complex_enable_dev(struct device *dev) {
|
static void root_complex_enable_dev(struct device *dev)
|
||||||
|
{
|
||||||
|
static int done = 0;
|
||||||
|
|
||||||
|
/* Do not delay UMA setup, as a device on the PCI bus may evaluate
|
||||||
|
the global uma_memory variables already in its enable function. */
|
||||||
|
if (!done) {
|
||||||
|
setup_bsp_ramtop();
|
||||||
|
setup_uma_memory();
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set the operations if it is a special bus type */
|
/* Set the operations if it is a special bus type */
|
||||||
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
||||||
dev->ops = &pci_domain_ops;
|
dev->ops = &pci_domain_ops;
|
||||||
|
|
|
@ -673,9 +673,6 @@ static void domain_set_resources(device_t dev)
|
||||||
u32 reset_memhole = 1;
|
u32 reset_memhole = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
setup_bsp_ramtop();
|
|
||||||
setup_uma_memory();
|
|
||||||
|
|
||||||
#if CONFIG_PCI_64BIT_PREF_MEM
|
#if CONFIG_PCI_64BIT_PREF_MEM
|
||||||
|
|
||||||
for (link = dev->link_list; link; link = link->next) {
|
for (link = dev->link_list; link; link = link->next) {
|
||||||
|
@ -1126,6 +1123,16 @@ static struct device_operations cpu_bus_ops = {
|
||||||
|
|
||||||
static void root_complex_enable_dev(struct device *dev)
|
static void root_complex_enable_dev(struct device *dev)
|
||||||
{
|
{
|
||||||
|
static int done = 0;
|
||||||
|
|
||||||
|
/* Do not delay UMA setup, as a device on the PCI bus may evaluate
|
||||||
|
the global uma_memory variables already in its enable function. */
|
||||||
|
if (!done) {
|
||||||
|
setup_bsp_ramtop();
|
||||||
|
setup_uma_memory();
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set the operations if it is a special bus type */
|
/* Set the operations if it is a special bus type */
|
||||||
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
||||||
dev->ops = &pci_domain_ops;
|
dev->ops = &pci_domain_ops;
|
||||||
|
|
|
@ -684,9 +684,6 @@ static void domain_set_resources(device_t dev)
|
||||||
u32 reset_memhole = 1;
|
u32 reset_memhole = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
setup_bsp_ramtop();
|
|
||||||
setup_uma_memory();
|
|
||||||
|
|
||||||
#if CONFIG_PCI_64BIT_PREF_MEM
|
#if CONFIG_PCI_64BIT_PREF_MEM
|
||||||
|
|
||||||
for (link = dev->link_list; link; link = link->next) {
|
for (link = dev->link_list; link; link = link->next) {
|
||||||
|
@ -1133,6 +1130,16 @@ static struct device_operations cpu_bus_ops = {
|
||||||
|
|
||||||
static void root_complex_enable_dev(struct device *dev)
|
static void root_complex_enable_dev(struct device *dev)
|
||||||
{
|
{
|
||||||
|
static int done = 0;
|
||||||
|
|
||||||
|
/* Do not delay UMA setup, as a device on the PCI bus may evaluate
|
||||||
|
the global uma_memory variables already in its enable function. */
|
||||||
|
if (!done) {
|
||||||
|
setup_bsp_ramtop();
|
||||||
|
setup_uma_memory();
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set the operations if it is a special bus type */
|
/* Set the operations if it is a special bus type */
|
||||||
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
||||||
dev->ops = &pci_domain_ops;
|
dev->ops = &pci_domain_ops;
|
||||||
|
|
|
@ -888,9 +888,6 @@ static void amdfam10_domain_set_resources(device_t dev)
|
||||||
u32 reset_memhole = 1;
|
u32 reset_memhole = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
setup_bsp_ramtop();
|
|
||||||
setup_uma_memory();
|
|
||||||
|
|
||||||
#if CONFIG_PCI_64BIT_PREF_MEM
|
#if CONFIG_PCI_64BIT_PREF_MEM
|
||||||
|
|
||||||
for(link = dev->link_list; link; link = link->next) {
|
for(link = dev->link_list; link; link = link->next) {
|
||||||
|
@ -1463,6 +1460,16 @@ static struct device_operations cpu_bus_ops = {
|
||||||
|
|
||||||
static void root_complex_enable_dev(struct device *dev)
|
static void root_complex_enable_dev(struct device *dev)
|
||||||
{
|
{
|
||||||
|
static int done = 0;
|
||||||
|
|
||||||
|
/* Do not delay UMA setup, as a device on the PCI bus may evaluate
|
||||||
|
the global uma_memory variables already in its enable function. */
|
||||||
|
if (!done) {
|
||||||
|
setup_bsp_ramtop();
|
||||||
|
setup_uma_memory();
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set the operations if it is a special bus type */
|
/* Set the operations if it is a special bus type */
|
||||||
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
||||||
dev->ops = &pci_domain_ops;
|
dev->ops = &pci_domain_ops;
|
||||||
|
|
|
@ -884,9 +884,6 @@ static void amdk8_domain_set_resources(device_t dev)
|
||||||
u32 reset_memhole = 1;
|
u32 reset_memhole = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
setup_bsp_ramtop();
|
|
||||||
setup_uma_memory();
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/* Place the IO devices somewhere safe */
|
/* Place the IO devices somewhere safe */
|
||||||
io = find_resource(dev, 0);
|
io = find_resource(dev, 0);
|
||||||
|
@ -1349,6 +1346,16 @@ static struct device_operations cpu_bus_ops = {
|
||||||
|
|
||||||
static void root_complex_enable_dev(struct device *dev)
|
static void root_complex_enable_dev(struct device *dev)
|
||||||
{
|
{
|
||||||
|
static int done = 0;
|
||||||
|
|
||||||
|
/* Do not delay UMA setup, as a device on the PCI bus may evaluate
|
||||||
|
the global uma_memory variables already in its enable function. */
|
||||||
|
if (!done) {
|
||||||
|
setup_bsp_ramtop();
|
||||||
|
setup_uma_memory();
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set the operations if it is a special bus type */
|
/* Set the operations if it is a special bus type */
|
||||||
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {
|
||||||
dev->ops = &pci_domain_ops;
|
dev->ops = &pci_domain_ops;
|
||||||
|
|
Loading…
Reference in New Issue