NetBSD Problem Report #57789

From www@netbsd.org  Wed Dec 20 15:45:17 2023
Return-Path: <www@netbsd.org>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
	(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
	by mollari.NetBSD.org (Postfix) with ESMTPS id BCDA31A923F
	for <gnats-bugs@gnats.NetBSD.org>; Wed, 20 Dec 2023 15:45:17 +0000 (UTC)
Message-Id: <20231220154516.5C76E1A9241@mollari.NetBSD.org>
Date: Wed, 20 Dec 2023 15:45:16 +0000 (UTC)
From: hashikaw@mail.ru
Reply-To: hashikaw@mail.ru
To: gnats-bugs@NetBSD.org
Subject: i386 kernel compile error (with no options MULIPROCESSOR and use acpi)
X-Send-Pr-Version: www-1.0

>Number:         57789
>Category:       kern
>Synopsis:       i386 kernel compile error (with no options MULIPROCESSOR and use acpi)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 20 15:50:00 +0000 2023
>Originator:     Kouichi Hashikawa
>Release:        10.0-RC1, current (i386)
>Organization:
>Environment:
>Description:
mp_cpu_funcs is defined at src/sys/arch/x86/x86/cpu.c 
inside of #ifdef MULTIPROCESSOR, but used at src/sys/arch/x86/x86/mpacpi.c
and at src/sys/arch/x86/x86/mpbios.c outside of #ifdef MULTIPROCESSOR.

Then, kernel(i386) which use no options MULTIPROCESSOR and use acpi
encountered compile error (not config error).

build/tools/bin/i486--netbsdelf-ld: mpbios.o: in function `mpbios_cpu.part.0': mpbios.c:(.text+0xa1b): undefined reference to `mp_cpu_funcs'
build/tools/bin/i486--netbsdelf-ld: mpacpi.o: in function `mpacpi_config_cpu': mpacpi.c:(.text+0xb5): undefined reference to `mp_cpu_funcs'
build/tools/bin/i486--netbsdelf-ld: mpacpi.c:(.text+0xe0): undefined reference to `mp_cpu_funcs'


(src/sys/arch/x86/x86/cpu.c: 157)
#ifdef MULTIPROCESSOR
int mp_cpu_start(struct cpu_info *, paddr_t);
void mp_cpu_start_cleanup(struct cpu_info *);
const struct cpu_functions mp_cpu_funcs = { mp_cpu_start, NULL,
                                            mp_cpu_start_cleanup };
#endif

(src/sys/arch/x86/x86/mpacpi.c: 369)
#if defined(MULTIPROCESSOR) || defined(IOAPIC)
        if (mpacpi_ncpu > 1)
                cpunum = lapic_cpu_number();
#endif

        switch (hdrp->Type) {
        case ACPI_MADT_TYPE_LOCAL_APIC:
                lapic = (ACPI_MADT_LOCAL_APIC *)hdrp;
                if (lapic->LapicFlags & ACPI_MADT_ENABLED) {
                        if (lapic->Id != cpunum)
                                caa.cpu_role = CPU_ROLE_AP;
                        else
                                caa.cpu_role = CPU_ROLE_BP;
                        caa.cpu_id = lapic->ProcessorId;
                        caa.cpu_number = lapic->Id;
                        caa.cpu_func = &mp_cpu_funcs;  <---

(src/sys/arch/x86/x86/mpacpi.c: 407)
                if (x2apic->LapicFlags & ACPI_MADT_ENABLED) {
                        if (x2apic->LocalApicId != cpunum)
                                caa.cpu_role = CPU_ROLE_AP;
                        else
                                caa.cpu_role = CPU_ROLE_BP;
                        caa.cpu_id = x2apic->Uid;
                        caa.cpu_number = x2apic->LocalApicId;
                        caa.cpu_func = &mp_cpu_funcs;  <---

(src/sys/arch/x86/x86/mpbios.c: 809)
        /* check for BSP flag */
        if (entry->cpu_flags & PROCENTRY_FLAG_BP)
                caa.cpu_role = CPU_ROLE_BP;
        else
                caa.cpu_role = CPU_ROLE_AP;

        caa.cpu_id = entry->apic_id;
        caa.cpu_number = entry->apic_id;
        caa.cpu_func = &mp_cpu_funcs;  <---


>How-To-Repeat:

>Fix:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.47 2022/09/11 19:34:41 kim Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2023 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.