The branch main has been updated by jhibbits:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=26d5c4fc04dff332e47dd5249034160b8613c232

commit 26d5c4fc04dff332e47dd5249034160b8613c232
Author:     Justin Hibbits <[email protected]>
AuthorDate: 2026-08-30 04:03:34 +0000
Commit:     Justin Hibbits <[email protected]>
CommitDate: 2026-08-30 04:04:30 +0000

    powerpc64/powernv: Migrate XICS to PIC_AP_INIT
    
    Get rid of the powernv-specific AP callback and use the new-ish
    PIC_AP_INIT() PIC KPI instead.
---
 sys/powerpc/pseries/xics.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/sys/powerpc/pseries/xics.c b/sys/powerpc/pseries/xics.c
index 6195307114b7..2a6db5e5b200 100644
--- a/sys/powerpc/pseries/xics.c
+++ b/sys/powerpc/pseries/xics.c
@@ -75,8 +75,7 @@ static void   xicp_mask(device_t, u_int, void *priv);
 static void    xicp_unmask(device_t, u_int, void *priv);
 
 #ifdef POWERNV
-extern void (*powernv_smp_ap_extra_init)(void);
-static void    xicp_smp_cpu_startup(void);
+static void    xicp_ap_init(device_t);
 #endif
 
 static device_method_t  xicp_methods[] = {
@@ -92,6 +91,9 @@ static device_method_t  xicp_methods[] = {
        DEVMETHOD(pic_ipi,              xicp_ipi),
        DEVMETHOD(pic_mask,             xicp_mask),
        DEVMETHOD(pic_unmask,           xicp_unmask),
+#ifdef POWERNV
+       DEVMETHOD(pic_ap_init,          xicp_ap_init),
+#endif
 
        DEVMETHOD_END
 };
@@ -275,11 +277,6 @@ xicp_attach(device_t dev)
            1 /* Number of IPIs */, FALSE);
        root_pic = dev;
 
-#ifdef POWERNV
-       if (sc->xics_emu)
-               powernv_smp_ap_extra_init = xicp_smp_cpu_startup;
-#endif
-
        return (0);
 }
 
@@ -554,14 +551,14 @@ xicp_unmask(device_t dev, u_int irq, void *priv)
 }
 
 #ifdef POWERNV
-/* This is only used on POWER9 systems with the XIVE's XICS emulation. */
+/* Only meaningful on POWER9 systems using the XIVE's XICS-emulation mode. */
 static void
-xicp_smp_cpu_startup(void)
+xicp_ap_init(device_t dev)
 {
        struct xicp_softc *sc;
 
        if (mfmsr() & PSL_HV) {
-               sc = device_get_softc(root_pic);
+               sc = device_get_softc(dev);
 
                if (sc->xics_emu)
                        opal_call(OPAL_INT_SET_CPPR, 0xff);

Reply via email to