From a955f5683a605cacc0c2ba80c79e0f2ccbe225b9 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 10 Oct 2011 19:58:21 +0800 Subject: [PATCH] nexus: Log invalid target CPUID for interrupt resource --- sys/platform/pc32/i386/nexus.c | 5 +++++ sys/platform/pc64/x86_64/nexus.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/sys/platform/pc32/i386/nexus.c b/sys/platform/pc32/i386/nexus.c index 2484747285..c36a2797d0 100644 --- a/sys/platform/pc32/i386/nexus.c +++ b/sys/platform/pc32/i386/nexus.c @@ -369,6 +369,11 @@ nexus_alloc_resource(device_t bus, device_t child, int type, int *rid, switch (type) { case SYS_RES_IRQ: + if (cpuid < 0 || cpuid >= ncpus) { + kprintf("NEXUS cpuid %d:\n", cpuid); + print_backtrace(-1); + cpuid = 0; /* XXX */ + } rm = &irq_rman; break; diff --git a/sys/platform/pc64/x86_64/nexus.c b/sys/platform/pc64/x86_64/nexus.c index b933925fb8..ee39693d0e 100644 --- a/sys/platform/pc64/x86_64/nexus.c +++ b/sys/platform/pc64/x86_64/nexus.c @@ -365,6 +365,11 @@ nexus_alloc_resource(device_t bus, device_t child, int type, int *rid, switch (type) { case SYS_RES_IRQ: + if (cpuid < 0 || cpuid >= ncpus) { + kprintf("NEXUS cpuid %d:\n", cpuid); + print_backtrace(-1); + cpuid = 0; /* XXX */ + } rm = &irq_rman; break; -- 2.41.0