]> git.sur5r.net Git - u-boot/blobdiff - arch/x86/cpu/mp_init.c
Merge git://git.denx.de/u-boot-x86
[u-boot] / arch / x86 / cpu / mp_init.c
index 4cc655566c3636e85ca97297d32bcfac05962699..cfd9bb447b8bcb7035fe2acc6f9efebe09d08242 100644 (file)
@@ -11,6 +11,7 @@
 #include <dm.h>
 #include <errno.h>
 #include <malloc.h>
+#include <qfw.h>
 #include <asm/atomic.h>
 #include <asm/cpu.h>
 #include <asm/interrupt.h>
@@ -21,7 +22,6 @@
 #include <asm/mtrr.h>
 #include <asm/processor.h>
 #include <asm/sipi.h>
-#include <asm/fw_cfg.h>
 #include <dm/device-internal.h>
 #include <dm/uclass-internal.h>
 #include <dm/lists.h>
@@ -248,8 +248,11 @@ static int load_sipi_vector(atomic_t **ap_countp, int num_cpus)
        if (!stack)
                return -ENOMEM;
        params->stack_top = (u32)(stack + size);
-
-       params->microcode_ptr = 0;
+#if !defined(CONFIG_QEMU) && !defined(CONFIG_HAVE_FSP) && \
+       !defined(CONFIG_INTEL_MID)
+       params->microcode_ptr = ucode_base;
+       debug("Microcode at %x\n", params->microcode_ptr);
+#endif
        params->msr_table_ptr = (u32)msr_save;
        ret = save_bsp_msrs(msr_save, sizeof(msr_save));
        if (ret < 0)
@@ -406,8 +409,6 @@ static int init_bsp(struct udevice **devp)
        cpu_get_name(processor_name);
        debug("CPU: %s\n", processor_name);
 
-       lapic_setup();
-
        apic_id = lapicid();
        ret = find_cpu_by_apic_id(apic_id, devp);
        if (ret) {
@@ -418,7 +419,7 @@ static int init_bsp(struct udevice **devp)
        return 0;
 }
 
-#ifdef CONFIG_QEMU
+#ifdef CONFIG_QFW
 static int qemu_cpu_fixup(void)
 {
        int ret;
@@ -494,7 +495,7 @@ int mp_init(struct mp_params *p)
        if (ret)
                return ret;
 
-#ifdef CONFIG_QEMU
+#ifdef CONFIG_QFW
        ret = qemu_cpu_fixup();
        if (ret)
                return ret;
@@ -568,7 +569,8 @@ int mp_init_cpu(struct udevice *cpu, void *unused)
         * seq num in the uclass_resolve_seq() during device_probe(). To avoid
         * this, set req_seq to the reg number in the device tree in advance.
         */
-       cpu->req_seq = fdtdec_get_int(gd->fdt_blob, cpu->of_offset, "reg", -1);
+       cpu->req_seq = fdtdec_get_int(gd->fdt_blob, dev_of_offset(cpu), "reg",
+                                     -1);
        plat->ucode_version = microcode_read_rev();
        plat->device_id = gd->arch.x86_device;