]> xenbits.xensource.com Git - people/royger/xen.git/commitdiff
xen/ppc: Drop support for pseries/OpenFirmware
authorShawn Anastasio <sanastasio@raptorengineering.com>
Thu, 7 Sep 2023 19:40:48 +0000 (14:40 -0500)
committerStefano Stabellini <stefano.stabellini@amd.com>
Fri, 8 Sep 2023 00:44:45 +0000 (17:44 -0700)
Since QEMU's PowerNV support has matured to the point where it is
now suitable for development, drop support for booting on the
paravirtualized pseries machine type and its associated interfaces.

Support for booting on pseries was broken by 74b725a64d80 ('xen/ppc:
Implement initial Radix MMU support'), and since there is little
practical value in continuing to support pseries as a target, just drop
support for it entirely.

Fixes: 74b725a64d80 ('xen/ppc: Implement initial Radix MMU support')
Signed-off-by: Shawn Anastasio <sanastasio@raptorengineering.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
xen/arch/ppc/Makefile
xen/arch/ppc/boot-of.c [deleted file]
xen/arch/ppc/include/asm/boot.h
xen/arch/ppc/ppc64/Makefile
xen/arch/ppc/ppc64/of-call.S [deleted file]
xen/arch/ppc/setup.c

index a059ac4c0a6af5f38fe588bb94067b0dceea4999..b3205b8f7af3d77a104978b00f355bed63c7ffd5 100644 (file)
@@ -1,6 +1,5 @@
 obj-$(CONFIG_PPC64) += ppc64/
 
-obj-y += boot-of.init.o
 obj-$(CONFIG_EARLY_PRINTK) += early_printk.init.o
 obj-y += mm-radix.o
 obj-y += opal.o
diff --git a/xen/arch/ppc/boot-of.c b/xen/arch/ppc/boot-of.c
deleted file mode 100644 (file)
index d6755cc..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * This file was derived from Xen 3.2's xen/arch/powerpc/boot_of.c,
- * originally licensed under GPL version 2 or later.
- *
- * Copyright IBM Corp. 2005, 2006, 2007
- * Copyright Raptor Engineering, LLC
- *
- * Authors: Jimi Xenidis <jimix@watson.ibm.com>
- *          Hollis Blanchard <hollisb@us.ibm.com>
- *          Shawn Anastasio <sanastasio@raptorengineering.com>
- */
-
-#include <xen/init.h>
-#include <xen/macros.h>
-#include <xen/stdarg.h>
-#include <xen/types.h>
-#include <asm/boot.h>
-#include <asm/byteorder.h>
-#include <asm/early_printk.h>
-
-/*
- * The Open Firmware client interface is called in 32-bit mode with the MMU off,
- * so any addresses passed to it must be physical addresses under 4GB.
- *
- * Since the client interface is only used during early boot before the MMU is on
- * and Xen itself was loaded by Open Firmware (and therefore resides below 4GB),
- * we can achieve the desired result with a simple cast to uint32_t.
- */
-#define ADDR(x) ((uint32_t)(unsigned long)(x))
-
-/* OF entrypoint*/
-static unsigned long __initdata of_vec;
-
-static int __initdata of_out;
-
-static int __init of_call(const char *service, uint32_t nargs, uint32_t nrets,
-                          int32_t rets[], ...)
-{
-    int rc;
-    va_list args;
-    unsigned int i;
-    struct of_service s;
-
-    s.ofs_service = cpu_to_be32(ADDR(service));
-    s.ofs_nargs = cpu_to_be32(nargs);
-    s.ofs_nrets = cpu_to_be32(nrets);
-
-    /* Copy all the params into the args array */
-    va_start(args, rets);
-
-    for ( i = 0; i < nargs; i++ )
-        s.ofs_args[i] = cpu_to_be32(va_arg(args, uint32_t));
-
-    va_end(args);
-
-    rc = enter_of(&s, of_vec);
-
-    /* Copy all return values to the output rets array */
-    for ( i = 0; i < nrets; i++ )
-        rets[i] = be32_to_cpu(s.ofs_args[i + nargs]);
-
-    return rc;
-}
-
-static int __init of_finddevice(const char *devspec)
-{
-    int32_t rets[1] = { OF_FAILURE };
-
-    of_call("finddevice", 1, ARRAY_SIZE(rets), rets, ADDR(devspec));
-    return rets[0];
-}
-
-static int __init of_getprop(int ph, const char *name, void *buf, uint32_t buflen)
-{
-    int32_t rets[1] = { OF_FAILURE };
-
-    of_call("getprop", 4, ARRAY_SIZE(rets), rets, ph, ADDR(name), ADDR(buf),
-            buflen);
-    return rets[0];
-}
-
-int __init of_write(int ih, const char *addr, uint32_t len)
-{
-    int32_t rets[1] = { OF_FAILURE };
-
-    of_call("write", 3, ARRAY_SIZE(rets), rets, ih, ADDR(addr), len);
-    return rets[0];
-}
-
-static void __init of_putchar(char c)
-{
-    if ( c == '\n' )
-    {
-        char buf = '\r';
-        of_write(of_out, &buf, 1);
-    }
-    of_write(of_out, &c, 1);
-}
-
-void __init boot_of_init(unsigned long vec)
-{
-    int bof_chosen;
-
-    of_vec = vec;
-
-    /* Get a handle to the default console */
-    bof_chosen = of_finddevice("/chosen");
-    of_getprop(bof_chosen, "stdout", &of_out, sizeof(of_out));
-    of_out = be32_to_cpu(of_out);
-
-    early_printk_init(of_putchar);
-}
index 296539cd9ed9e4dd72d3927d1640458ed1d33c4c..d62c3ff6e04d9afc148d776340dc1185fa928763 100644 (file)
@@ -4,25 +4,6 @@
 
 #include <xen/types.h>
 
-/*
- * OpenFirmware boot interfaces
- */
-
-enum {
-    OF_FAILURE = -1,
-    OF_SUCCESS = 0,
-};
-
-struct of_service {
-    __be32 ofs_service;
-    __be32 ofs_nargs;
-    __be32 ofs_nrets;
-    __be32 ofs_args[10];
-};
-
-int enter_of(struct of_service *args, unsigned long entry);
-void boot_of_init(unsigned long vec);
-
 /*
  * OPAL boot interfaces
  */
index b9a91dc15fad62499073419a38f007d1b9854cc2..5b88355bb2eb966932fa2779edb2fa795ff76d82 100644 (file)
@@ -1,3 +1,2 @@
 obj-y += head.o
-obj-y += of-call.o
 obj-y += opal-calls.o
diff --git a/xen/arch/ppc/ppc64/of-call.S b/xen/arch/ppc/ppc64/of-call.S
deleted file mode 100644 (file)
index 2a2e308..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * Adapted from Linux's arch/powerpc/kernel/entry_64.S, with the
- * following copyright notice:
- *
- *  PowerPC version
- *    Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
- *  Rewritten by Cort Dougan (cort@cs.nmt.edu) for PReP
- *    Copyright (C) 1996 Cort Dougan <cort@cs.nmt.edu>
- *  Adapted for Power Macintosh by Paul Mackerras.
- *  Low-level exception handlers and MMU support
- *  rewritten by Paul Mackerras.
- *    Copyright (C) 1996 Paul Mackerras.
- *  MPC8xx modifications Copyright (C) 1997 Dan Malek (dmalek@jlc.net).
- */
-
-#include <asm/asm-offsets.h>
-#include <asm/asm-defns.h>
-#include <asm/msr.h>
-
-/* size of minimum stack frame that can hold an entire cpu_user_regs struct */
-#define STACK_SWITCH_FRAME_SIZE UREGS_sizeof
-
-    .section .init.text, "ax", @progbits
-
-ENTRY(enter_of)
-    mflr    %r0
-    std     %r0, 16(%r1)
-    stdu    %r1, -STACK_SWITCH_FRAME_SIZE(%r1) /* Save SP and create stack space */
-
-    /*
-     * Because PROM is running in 32b mode, it clobbers the high order half
-     * of all registers that it saves.  We therefore save those registers
-     * PROM might touch to the stack.  (%r0, %r3-%r13 are caller saved)
-     */
-    SAVE_GPR(2, %r1)
-    SAVE_GPR(13, %r1)
-    SAVE_NVGPRS(%r1)
-    mfcr    %r10
-    mfmsr   %r11
-    std     %r10, UREGS_cr(%r1)
-    std     %r11, UREGS_msr(%r1)
-
-    /* Put PROM address in SRR0 */
-    mtsrr0  %r4
-
-    /* Setup our trampoline return addr in LR */
-    bcl     20, 31, .+4
-0:  mflr    %r4
-    addi    %r4, %r4, 1f - 0b
-    mtlr    %r4
-
-    /* Prepare a 32-bit mode big endian MSR */
-    LOAD_IMM64(%r12, MSR_SF | MSR_LE)
-    andc    %r11, %r11, %r12
-    mtsrr1  %r11
-    rfid
-
-1:  /* Return from OF */
-    FIXUP_ENDIAN
-
-    /* Just make sure that %r1 top 32 bits didn't get corrupt by OF */
-    rldicl  %r1, %r1, 0, 32
-
-    /* Restore the MSR (back to 64 bits) */
-    ld      %r0, UREGS_msr(%r1)
-    mtmsrd  %r0
-    isync
-
-    /* Restore other registers */
-    REST_GPR(2, %r1)
-    REST_GPR(13, %r1)
-    REST_NVGPRS(%r1)
-    ld      %r4, UREGS_cr(%r1)
-    mtcr    %r4
-
-    addi    %r1, %r1, STACK_SWITCH_FRAME_SIZE
-    ld      %r0, 16(%r1)
-    mtlr    %r0
-    blr
-
-    .size enter_of, . - enter_of
-    .type enter_of, %function
index 0106e9c9dae43840377020f178cce58e03ee24e6..3fc7705d9bd6d5dbe59fbfd519d404704f66e50f 100644 (file)
@@ -14,17 +14,12 @@ void __init noreturn start_xen(unsigned long r3, unsigned long r4,
 {
     if ( r5 )
     {
-        /* OpenFirmware boot protocol */
-        boot_of_init(r5);
+        /* Unsupported OpenFirmware boot protocol */
+        __builtin_trap();
     }
     else
     {
-        /*
-         * kexec boot protocol
-         *
-         * TODO: This currently assumes an OPAL/PowerNV system, but it's also
-         * possible to be kexec'd on an OF system.
-         */
+        /* kexec boot protocol */
         boot_opal_init((void *)r3);
     }