select ELF64_TO_32 if ARCH_X86_64
select LIBUKRELOC if OPTIMIZE_PIE
select LIBUKOFW if ARCH_ARM_64
- select LIBUKINTCTLR if ARCH_X86_64
+ select HAVE_INTCTLR
+ select HAVE_APIC if ARCH_X86_64
+ select LIBUKINTCTLR_XPIC if ARCH_X86_64
imply LIBUKBUS_PLATFORM if ARCH_ARM_64
imply LIBVIRTIO_9P if LIBUK9P
imply LIBVIRTIO_NET if LIBUKNETDEV
config KVM_VMM_QEMU
bool "QEMU"
- imply LIBUKINTCTLR_GICV2
+ imply LIBUKINTCTLR_GICV2 if ARCH_ARM_64
select HAVE_PCI
select HAVE_MMIO
bool "Firecracker"
select KVM_BOOT_PROTO_LXBOOT
select HAVE_MMIO
- imply LIBUKINTCTLR_GICV3
+ imply LIBUKINTCTLR_GICV3 if ARCH_ARM_64
depends on ARCH_X86_64 || ARCH_ARM_64
endchoice
UK_CRASH("Could not initialize MTE (%d)\n", rc);
#endif /* CONFIG_HAVE_MEMTAG */
-#ifdef CONFIG_RTC_PL031
- /* Initialize RTC */
- pl031_init_rtc(fdt);
-#endif /* CONFIG_RTC_PL031 */
#if defined(CONFIG_UKPLAT_ACPI)
rc = acpi_init();
#endif /* CONFIG_UKPLAT_ACPI */
/* Initialize interrupt controller */
- intctrl_init();
+ rc = uk_intctlr_probe();
+ if (unlikely(rc))
+ UK_CRASH("Could not initialize the IRQ controller: %d\n", rc);
/* Initialize logical boot CPU */
rc = lcpu_init(lcpu_get_bsp());
if (unlikely(rc < 0))
UK_CRASH("Failed to get PSCI method: %d.\n", rc);
+#if CONFIG_RTC_PL031
+ /* Initialize RTC */
+ pl031_init_rtc(fdt);
+#endif /* CONFIG_RTC_PL031 */
+
/*
* Switch away from the bootstrap stack as early as possible.
*/
UK_CRASH("Bootstrap processor init failed: %d\n", rc);
/* Initialize IRQ controller */
- intctrl_init();
+ rc = uk_intctlr_probe();
+ if (unlikely(rc))
+ UK_CRASH("Interrupt controller init failed: %d\n", rc);
/* Initialize command line */
rc = cmdline_init(bi);
#include <stdlib.h>
#include <uk/plat/time.h>
-#include <uk/plat/irq.h>
+#include <uk/intctlr.h>
#include <kvm/tscclock.h>
#include <uk/assert.h>
{
int rc;
- rc = ukplat_irq_register(0, timer_handler, NULL);
+ rc = uk_intctlr_irq_register(0, timer_handler, NULL);
if (rc < 0)
UK_CRASH("Failed to register timer interrupt handler\n");