nb/amd/pi/00730F01: initialize GNB IOAPIC
Northbridge IOAPIC was not being initialized which caused its APIC ID to be set to 0 (the same APIC ID as BSP). TEST=boot Debian Linux on PC Engines apu2 Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com> Change-Id: Id06ad4c22a56eb3559e1d584fd0fcac1f95f13e7 Reviewed-on: https://review.coreboot.org/c/coreboot/+/39700 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
parent
89ae6b8fc2
commit
208318cdf4
|
@ -15,6 +15,7 @@
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <device/pci_ops.h>
|
#include <device/pci_ops.h>
|
||||||
#include <arch/acpi.h>
|
#include <arch/acpi.h>
|
||||||
|
#include <arch/ioapic.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
#include <device/pci.h>
|
#include <device/pci.h>
|
||||||
|
@ -290,6 +291,7 @@ static void read_resources(struct device *dev)
|
||||||
{
|
{
|
||||||
u32 nodeid;
|
u32 nodeid;
|
||||||
struct bus *link;
|
struct bus *link;
|
||||||
|
struct resource *res;
|
||||||
|
|
||||||
nodeid = amdfam16_nodeid(dev);
|
nodeid = amdfam16_nodeid(dev);
|
||||||
for (link = dev->link_list; link; link = link->next) {
|
for (link = dev->link_list; link; link = link->next) {
|
||||||
|
@ -304,6 +306,12 @@ static void read_resources(struct device *dev)
|
||||||
* the CPU_CLUSTER.
|
* the CPU_CLUSTER.
|
||||||
*/
|
*/
|
||||||
mmconf_resource(dev, MMIO_CONF_BASE);
|
mmconf_resource(dev, MMIO_CONF_BASE);
|
||||||
|
|
||||||
|
/* NB IOAPIC2 resource */
|
||||||
|
res = new_resource(dev, IO_APIC2_ADDR); /* IOAPIC2 */
|
||||||
|
res->base = IO_APIC2_ADDR;
|
||||||
|
res->size = 0x00001000;
|
||||||
|
res->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void set_resource(struct device *dev, struct resource *resource, u32 nodeid)
|
static void set_resource(struct device *dev, struct resource *resource, u32 nodeid)
|
||||||
|
@ -410,6 +418,7 @@ static void set_resources(struct device *dev)
|
||||||
|
|
||||||
static void northbridge_init(struct device *dev)
|
static void northbridge_init(struct device *dev)
|
||||||
{
|
{
|
||||||
|
setup_ioapic((u8 *)IO_APIC2_ADDR, CONFIG_MAX_CPUS+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned long acpi_fill_hest(acpi_hest_t *hest)
|
static unsigned long acpi_fill_hest(acpi_hest_t *hest)
|
||||||
|
|
|
@ -15,5 +15,6 @@
|
||||||
#define __AMD_NB_COMMON_H__
|
#define __AMD_NB_COMMON_H__
|
||||||
|
|
||||||
#define DEV_CDB 0x18
|
#define DEV_CDB 0x18
|
||||||
|
#define IO_APIC2_ADDR 0xfec20000
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue