diff mbox series

[6/7] spapr: Stop providing RTAS blob

Message ID 20190911040452.8341-7-david@gibson.dropbear.id.au (mailing list archive)
State New, archived
Headers show
Series spapr: CAS and reset cleanup preliminaries | expand

Commit Message

David Gibson Sept. 11, 2019, 4:04 a.m. UTC
From: Alexey Kardashevskiy <aik@ozlabs.ru>

SLOF implements one itself so let's remove it from QEMU. It is one less
image and simpler setup as the RTAS blob never stays in its initial place
anyway as the guest OS always decides where to put it.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 MAINTAINERS                     |   2 --
 Makefile                        |   2 +-
 configure                       |   6 +----
 hw/ppc/spapr.c                  |  32 ++-----------------------
 hw/ppc/spapr_rtas.c             |  41 --------------------------------
 include/hw/ppc/spapr.h          |   2 --
 pc-bios/spapr-rtas.bin          | Bin 20 -> 0 bytes
 pc-bios/spapr-rtas/Makefile     |  27 ---------------------
 pc-bios/spapr-rtas/spapr-rtas.S |  37 ----------------------------
 9 files changed, 4 insertions(+), 145 deletions(-)
 delete mode 100644 pc-bios/spapr-rtas.bin
 delete mode 100644 pc-bios/spapr-rtas/Makefile
 delete mode 100644 pc-bios/spapr-rtas/spapr-rtas.S

Comments

Greg Kurz Sept. 11, 2019, 9:16 a.m. UTC | #1
On Wed, 11 Sep 2019 14:04:51 +1000
David Gibson <david@gibson.dropbear.id.au> wrote:

> From: Alexey Kardashevskiy <aik@ozlabs.ru>
> 
> SLOF implements one itself so let's remove it from QEMU. It is one less
> image and simpler setup as the RTAS blob never stays in its initial place
> anyway as the guest OS always decides where to put it.
> 
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> ---
>  MAINTAINERS                     |   2 --
>  Makefile                        |   2 +-
>  configure                       |   6 +----
>  hw/ppc/spapr.c                  |  32 ++-----------------------
>  hw/ppc/spapr_rtas.c             |  41 --------------------------------
>  include/hw/ppc/spapr.h          |   2 --
>  pc-bios/spapr-rtas.bin          | Bin 20 -> 0 bytes
>  pc-bios/spapr-rtas/Makefile     |  27 ---------------------
>  pc-bios/spapr-rtas/spapr-rtas.S |  37 ----------------------------
>  9 files changed, 4 insertions(+), 145 deletions(-)
>  delete mode 100644 pc-bios/spapr-rtas.bin
>  delete mode 100644 pc-bios/spapr-rtas/Makefile
>  delete mode 100644 pc-bios/spapr-rtas/spapr-rtas.S
> 

Nice diffstat :)

But pwclient fails to apply it :(

[greg@bahia qemu-spapr]$ pwclient git-am 1160642
Applying patch #1160642 using 'git am'
Description: [6/7] spapr: Stop providing RTAS blob
Applying: spapr: Stop providing RTAS blob
error: cannot apply binary patch to 'pc-bios/spapr-rtas.bin' without full index line
error: pc-bios/spapr-rtas.bin: patch does not apply
Patch failed at 0001 spapr: Stop providing RTAS blob
hint: Use 'git am --show-current-patch' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
'git am' failed with exit status 128

and

[greg@bahia qemu-spapr]$ git am --show-current-patch | patch -p1 --merge 
patching file MAINTAINERS
patching file Makefile
patching file configure
patching file hw/ppc/spapr.c
patching file hw/ppc/spapr_rtas.c
patching file include/hw/ppc/spapr.h
patching file pc-bios/spapr-rtas.bin
Not deleting file pc-bios/spapr-rtas.bin as content differs from patch

Not sure what's happening here...

patching file pc-bios/spapr-rtas/Makefile
patching file pc-bios/spapr-rtas/spapr-rtas.S

> diff --git a/MAINTAINERS b/MAINTAINERS
> index 50eaf005f4..9823f40213 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1077,8 +1077,6 @@ F: hw/*/spapr*
>  F: include/hw/*/spapr*
>  F: hw/*/xics*
>  F: include/hw/*/xics*
> -F: pc-bios/spapr-rtas/*
> -F: pc-bios/spapr-rtas.bin
>  F: pc-bios/slof.bin
>  F: docs/specs/ppc-spapr-hcalls.txt
>  F: docs/specs/ppc-spapr-hotplug.txt
> diff --git a/Makefile b/Makefile
> index ae17a83067..4637f95371 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -764,7 +764,7 @@ qemu-nsis.bmp \
>  bamboo.dtb canyonlands.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb \
>  multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin \
>  s390-ccw.img s390-netboot.img \
> -spapr-rtas.bin slof.bin skiboot.lid \
> +slof.bin skiboot.lid \
>  palcode-clipper \
>  u-boot.e500 u-boot-sam460-20100605.bin \
>  qemu_vga.ndrv \
> diff --git a/configure b/configure
> index 95134c0180..b79d38592b 100755
> --- a/configure
> +++ b/configure
> @@ -6211,9 +6211,6 @@ if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \
>          fi
>      done
>  fi
> -if test "$ARCH" = "ppc64" && test "$targetos" != "Darwin" ; then
> -  roms="$roms spapr-rtas"
> -fi
>  
>  # Only build s390-ccw bios if we're on s390x and the compiler has -march=z900
>  if test "$cpu" = "s390x" ; then
> @@ -7930,14 +7927,13 @@ fi
>  DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
>  DIRS="$DIRS tests/fp tests/qgraph"
>  DIRS="$DIRS docs docs/interop fsdev scsi"
> -DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
> +DIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
>  DIRS="$DIRS roms/seabios roms/vgabios"
>  LINKS="Makefile tests/tcg/Makefile"
>  LINKS="$LINKS tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
>  LINKS="$LINKS tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
>  LINKS="$LINKS tests/fp/Makefile"
>  LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
> -LINKS="$LINKS pc-bios/spapr-rtas/Makefile"
>  LINKS="$LINKS pc-bios/s390-ccw/Makefile"
>  LINKS="$LINKS roms/seabios/Makefile roms/vgabios/Makefile"
>  LINKS="$LINKS pc-bios/qemu-icon.bmp"
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index d18744268f..5a919a6cc1 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -94,7 +94,6 @@
>   * We load our kernel at 4M, leaving space for SLOF initial image
>   */
>  #define FDT_MAX_SIZE            0x100000
> -#define RTAS_MAX_SIZE           0x10000
>  #define RTAS_MAX_ADDR           0x80000000 /* RTAS must stay below that */
>  #define FW_MAX_SIZE             0x400000
>  #define FW_FILE_NAME            "slof.bin"
> @@ -1721,8 +1720,7 @@ static void spapr_machine_reset(MachineState *machine)
>  {
>      SpaprMachineState *spapr = SPAPR_MACHINE(machine);
>      PowerPCCPU *first_ppc_cpu;
> -    uint32_t rtas_limit;
> -    hwaddr rtas_addr, fdt_addr;
> +    hwaddr fdt_addr;
>      void *fdt;
>      int rc;
>  
> @@ -1786,14 +1784,10 @@ static void spapr_machine_reset(MachineState *machine)
>       * or just below 2GB, whichever is lower, so that it can be
>       * processed with 32-bit real mode code if necessary
>       */
> -    rtas_limit = MIN(spapr->rma_size, RTAS_MAX_ADDR);
> -    rtas_addr = rtas_limit - RTAS_MAX_SIZE;
> -    fdt_addr = rtas_addr - FDT_MAX_SIZE;
> +    fdt_addr = MIN(spapr->rma_size, RTAS_MAX_ADDR) - FDT_MAX_SIZE;
>  
>      fdt = spapr_build_fdt(spapr);
>  
> -    spapr_load_rtas(spapr, fdt, rtas_addr);
> -
>      rc = fdt_pack(fdt);
>  
>      /* Should only fail if we've built a corrupted tree */
> @@ -2953,28 +2947,6 @@ static void spapr_machine_init(MachineState *machine)
>          spapr_create_lmb_dr_connectors(spapr);
>      }
>  
> -    filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, "spapr-rtas.bin");
> -    if (!filename) {
> -        error_report("Could not find LPAR rtas '%s'", "spapr-rtas.bin");
> -        exit(1);
> -    }
> -    spapr->rtas_size = get_image_size(filename);
> -    if (spapr->rtas_size < 0) {
> -        error_report("Could not get size of LPAR rtas '%s'", filename);
> -        exit(1);
> -    }
> -    spapr->rtas_blob = g_malloc(spapr->rtas_size);
> -    if (load_image_size(filename, spapr->rtas_blob, spapr->rtas_size) < 0) {
> -        error_report("Could not load LPAR rtas '%s'", filename);
> -        exit(1);
> -    }
> -    if (spapr->rtas_size > RTAS_MAX_SIZE) {
> -        error_report("RTAS too big ! 0x%zx bytes (max is 0x%x)",
> -                     (size_t)spapr->rtas_size, RTAS_MAX_SIZE);
> -        exit(1);
> -    }
> -    g_free(filename);
> -
>      /* Set up RTAS event infrastructure */
>      spapr_events_init(spapr);
>  
> diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
> index bee3835214..8d8d8cdfcb 100644
> --- a/hw/ppc/spapr_rtas.c
> +++ b/hw/ppc/spapr_rtas.c
> @@ -477,47 +477,6 @@ void spapr_dt_rtas_tokens(void *fdt, int rtas)
>      }
>  }
>  
> -void spapr_load_rtas(SpaprMachineState *spapr, void *fdt, hwaddr addr)
> -{
> -    int rtas_node;
> -    int ret;
> -
> -    /* Copy RTAS blob into guest RAM */
> -    cpu_physical_memory_write(addr, spapr->rtas_blob, spapr->rtas_size);
> -
> -    ret = fdt_add_mem_rsv(fdt, addr, spapr->rtas_size);
> -    if (ret < 0) {
> -        error_report("Couldn't add RTAS reserve entry: %s",
> -                     fdt_strerror(ret));
> -        exit(1);
> -    }
> -
> -    /* Update the device tree with the blob's location */
> -    rtas_node = fdt_path_offset(fdt, "/rtas");
> -    assert(rtas_node >= 0);
> -
> -    ret = fdt_setprop_cell(fdt, rtas_node, "linux,rtas-base", addr);
> -    if (ret < 0) {
> -        error_report("Couldn't add linux,rtas-base property: %s",
> -                     fdt_strerror(ret));
> -        exit(1);
> -    }
> -
> -    ret = fdt_setprop_cell(fdt, rtas_node, "linux,rtas-entry", addr);
> -    if (ret < 0) {
> -        error_report("Couldn't add linux,rtas-entry property: %s",
> -                     fdt_strerror(ret));
> -        exit(1);
> -    }
> -
> -    ret = fdt_setprop_cell(fdt, rtas_node, "rtas-size", spapr->rtas_size);
> -    if (ret < 0) {
> -        error_report("Couldn't add rtas-size property: %s",
> -                     fdt_strerror(ret));
> -        exit(1);
> -    }
> -}
> -
>  static void core_rtas_register_types(void)
>  {
>      spapr_rtas_register(RTAS_DISPLAY_CHARACTER, "display-character",
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index dfec8e8e76..cbd1a4c9f3 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -154,8 +154,6 @@ struct SpaprMachineState {
>  
>      hwaddr rma_size;
>      int vrma_adjust;
> -    ssize_t rtas_size;
> -    void *rtas_blob;
>      uint32_t fdt_size;
>      uint32_t fdt_initial_size;
>      void *fdt_blob;
> diff --git a/pc-bios/spapr-rtas.bin b/pc-bios/spapr-rtas.bin
> deleted file mode 100644
> index fc24c8ed8b..0000000000
> Binary files a/pc-bios/spapr-rtas.bin and /dev/null differ
> diff --git a/pc-bios/spapr-rtas/Makefile b/pc-bios/spapr-rtas/Makefile
> deleted file mode 100644
> index 4b9bb12306..0000000000
> --- a/pc-bios/spapr-rtas/Makefile
> +++ /dev/null
> @@ -1,27 +0,0 @@
> -all: build-all
> -# Dummy command so that make thinks it has done something
> -	@true
> -
> -include ../../config-host.mak
> -include $(SRC_PATH)/rules.mak
> -
> -$(call set-vpath, $(SRC_PATH)/pc-bios/spapr-rtas)
> -
> -.PHONY : all clean build-all
> -
> -#CFLAGS += -I$(SRC_PATH)
> -#QEMU_CFLAGS = $(CFLAGS)
> -
> -build-all: spapr-rtas.bin
> -
> -%.o: %.S
> -	$(call quiet-command,$(CCAS) -mbig -c -o $@ $<,"CCAS","$(TARGET_DIR)$@")
> -
> -%.img: %.o
> -	$(call quiet-command,$(CC) -nostdlib -mbig -o $@ $<,"Building","$(TARGET_DIR)$@")
> -
> -%.bin: %.img
> -	$(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@,"Building","$(TARGET_DIR)$@")
> -
> -clean:
> -	rm -f *.o *.d *.img *.bin *~
> diff --git a/pc-bios/spapr-rtas/spapr-rtas.S b/pc-bios/spapr-rtas/spapr-rtas.S
> deleted file mode 100644
> index 903bec2150..0000000000
> --- a/pc-bios/spapr-rtas/spapr-rtas.S
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -/*
> - * QEMU PowerPC pSeries Logical Partition (aka sPAPR) hardware System Emulator
> - *
> - * Trivial in-partition RTAS implementation, based on a hypercall
> - *
> - * Copyright (c) 2010,2011 David Gibson, IBM Corporation.
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a copy
> - * of this software and associated documentation files (the "Software"), to deal
> - * in the Software without restriction, including without limitation the rights
> - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> - * copies of the Software, and to permit persons to whom the Software is
> - * furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice shall be included in
> - * all copies or substantial portions of the Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> - * THE SOFTWARE.
> - *
> - */
> -
> -#define KVMPPC_HCALL_BASE       0xf000
> -#define KVMPPC_H_RTAS           (KVMPPC_HCALL_BASE + 0x0)
> -
> -.globl	_start
> -_start:
> -	mr	4,3
> -	lis	3,KVMPPC_H_RTAS@h
> -	ori	3,3,KVMPPC_H_RTAS@l
> -	sc	1
> -	blr
Alexey Kardashevskiy Sept. 12, 2019, 1:50 a.m. UTC | #2
On 11/09/2019 19:16, Greg Kurz wrote:
> On Wed, 11 Sep 2019 14:04:51 +1000
> David Gibson <david@gibson.dropbear.id.au> wrote:
> 
>> From: Alexey Kardashevskiy <aik@ozlabs.ru>
>>
>> SLOF implements one itself so let's remove it from QEMU. It is one less
>> image and simpler setup as the RTAS blob never stays in its initial place
>> anyway as the guest OS always decides where to put it.
>>
>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
>> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
>> ---
>>  MAINTAINERS                     |   2 --
>>  Makefile                        |   2 +-
>>  configure                       |   6 +----
>>  hw/ppc/spapr.c                  |  32 ++-----------------------
>>  hw/ppc/spapr_rtas.c             |  41 --------------------------------
>>  include/hw/ppc/spapr.h          |   2 --
>>  pc-bios/spapr-rtas.bin          | Bin 20 -> 0 bytes
>>  pc-bios/spapr-rtas/Makefile     |  27 ---------------------
>>  pc-bios/spapr-rtas/spapr-rtas.S |  37 ----------------------------
>>  9 files changed, 4 insertions(+), 145 deletions(-)
>>  delete mode 100644 pc-bios/spapr-rtas.bin
>>  delete mode 100644 pc-bios/spapr-rtas/Makefile
>>  delete mode 100644 pc-bios/spapr-rtas/spapr-rtas.S
>>
> 
> Nice diffstat :)
> 
> But pwclient fails to apply it :(
> 
> [greg@bahia qemu-spapr]$ pwclient git-am 1160642
> Applying patch #1160642 using 'git am'
> Description: [6/7] spapr: Stop providing RTAS blob
> Applying: spapr: Stop providing RTAS blob
> error: cannot apply binary patch to 'pc-bios/spapr-rtas.bin' without full index line


Some git feature/bug with removing binaries:

https://stackoverflow.com/questions/17152171/git-cannot-apply-binary-patch-without-full-index-line


David posted with this:
===
diff --git a/pc-bios/spapr-rtas.bin b/pc-bios/spapr-rtas.bin
deleted file mode 100644
index fc24c8ed8b..0000000000
Binary files a/pc-bios/spapr-rtas.bin and /dev/null differ
===

And my patch has a bigger chunk:

git format-patch -1 --stdout 1a5efb9283c2
(there is no additional flag needed to my git 2.17.1):

===
diff --git a/pc-bios/spapr-rtas.bin b/pc-bios/spapr-rtas.bin
deleted file mode 100644
index
fc24c8ed8b92a3a441aed6e2bd013b2ccece9229..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 20
bcmb<Pk*=^wU|>i{{=neEz@X&Uz@PvCJTV0q
===

I do not know why are these different.

Thy this one:
https://patchwork.ozlabs.org/patch/1132443/



> error: pc-bios/spapr-rtas.bin: patch does not apply
> Patch failed at 0001 spapr: Stop providing RTAS blob
> hint: Use 'git am --show-current-patch' to see the failed patch
> When you have resolved this problem, run "git am --continue".
> If you prefer to skip this patch, run "git am --skip" instead.
> To restore the original branch and stop patching, run "git am --abort".
> 'git am' failed with exit status 128
> 
> and
> 
> [greg@bahia qemu-spapr]$ git am --show-current-patch | patch -p1 --merge 
> patching file MAINTAINERS
> patching file Makefile
> patching file configure
> patching file hw/ppc/spapr.c
> patching file hw/ppc/spapr_rtas.c
> patching file include/hw/ppc/spapr.h
> patching file pc-bios/spapr-rtas.bin
> Not deleting file pc-bios/spapr-rtas.bin as content differs from patch
> 
> Not sure what's happening here...
> 
> patching file pc-bios/spapr-rtas/Makefile
> patching file pc-bios/spapr-rtas/spapr-rtas.S
> 
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 50eaf005f4..9823f40213 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -1077,8 +1077,6 @@ F: hw/*/spapr*
>>  F: include/hw/*/spapr*
>>  F: hw/*/xics*
>>  F: include/hw/*/xics*
>> -F: pc-bios/spapr-rtas/*
>> -F: pc-bios/spapr-rtas.bin
>>  F: pc-bios/slof.bin
>>  F: docs/specs/ppc-spapr-hcalls.txt
>>  F: docs/specs/ppc-spapr-hotplug.txt
>> diff --git a/Makefile b/Makefile
>> index ae17a83067..4637f95371 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -764,7 +764,7 @@ qemu-nsis.bmp \
>>  bamboo.dtb canyonlands.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb \
>>  multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin \
>>  s390-ccw.img s390-netboot.img \
>> -spapr-rtas.bin slof.bin skiboot.lid \
>> +slof.bin skiboot.lid \
>>  palcode-clipper \
>>  u-boot.e500 u-boot-sam460-20100605.bin \
>>  qemu_vga.ndrv \
>> diff --git a/configure b/configure
>> index 95134c0180..b79d38592b 100755
>> --- a/configure
>> +++ b/configure
>> @@ -6211,9 +6211,6 @@ if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \
>>          fi
>>      done
>>  fi
>> -if test "$ARCH" = "ppc64" && test "$targetos" != "Darwin" ; then
>> -  roms="$roms spapr-rtas"
>> -fi
>>  
>>  # Only build s390-ccw bios if we're on s390x and the compiler has -march=z900
>>  if test "$cpu" = "s390x" ; then
>> @@ -7930,14 +7927,13 @@ fi
>>  DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
>>  DIRS="$DIRS tests/fp tests/qgraph"
>>  DIRS="$DIRS docs docs/interop fsdev scsi"
>> -DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
>> +DIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
>>  DIRS="$DIRS roms/seabios roms/vgabios"
>>  LINKS="Makefile tests/tcg/Makefile"
>>  LINKS="$LINKS tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
>>  LINKS="$LINKS tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
>>  LINKS="$LINKS tests/fp/Makefile"
>>  LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
>> -LINKS="$LINKS pc-bios/spapr-rtas/Makefile"
>>  LINKS="$LINKS pc-bios/s390-ccw/Makefile"
>>  LINKS="$LINKS roms/seabios/Makefile roms/vgabios/Makefile"
>>  LINKS="$LINKS pc-bios/qemu-icon.bmp"
>> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
>> index d18744268f..5a919a6cc1 100644
>> --- a/hw/ppc/spapr.c
>> +++ b/hw/ppc/spapr.c
>> @@ -94,7 +94,6 @@
>>   * We load our kernel at 4M, leaving space for SLOF initial image
>>   */
>>  #define FDT_MAX_SIZE            0x100000
>> -#define RTAS_MAX_SIZE           0x10000
>>  #define RTAS_MAX_ADDR           0x80000000 /* RTAS must stay below that */
>>  #define FW_MAX_SIZE             0x400000
>>  #define FW_FILE_NAME            "slof.bin"
>> @@ -1721,8 +1720,7 @@ static void spapr_machine_reset(MachineState *machine)
>>  {
>>      SpaprMachineState *spapr = SPAPR_MACHINE(machine);
>>      PowerPCCPU *first_ppc_cpu;
>> -    uint32_t rtas_limit;
>> -    hwaddr rtas_addr, fdt_addr;
>> +    hwaddr fdt_addr;
>>      void *fdt;
>>      int rc;
>>  
>> @@ -1786,14 +1784,10 @@ static void spapr_machine_reset(MachineState *machine)
>>       * or just below 2GB, whichever is lower, so that it can be
>>       * processed with 32-bit real mode code if necessary
>>       */
>> -    rtas_limit = MIN(spapr->rma_size, RTAS_MAX_ADDR);
>> -    rtas_addr = rtas_limit - RTAS_MAX_SIZE;
>> -    fdt_addr = rtas_addr - FDT_MAX_SIZE;
>> +    fdt_addr = MIN(spapr->rma_size, RTAS_MAX_ADDR) - FDT_MAX_SIZE;
>>  
>>      fdt = spapr_build_fdt(spapr);
>>  
>> -    spapr_load_rtas(spapr, fdt, rtas_addr);
>> -
>>      rc = fdt_pack(fdt);
>>  
>>      /* Should only fail if we've built a corrupted tree */
>> @@ -2953,28 +2947,6 @@ static void spapr_machine_init(MachineState *machine)
>>          spapr_create_lmb_dr_connectors(spapr);
>>      }
>>  
>> -    filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, "spapr-rtas.bin");
>> -    if (!filename) {
>> -        error_report("Could not find LPAR rtas '%s'", "spapr-rtas.bin");
>> -        exit(1);
>> -    }
>> -    spapr->rtas_size = get_image_size(filename);
>> -    if (spapr->rtas_size < 0) {
>> -        error_report("Could not get size of LPAR rtas '%s'", filename);
>> -        exit(1);
>> -    }
>> -    spapr->rtas_blob = g_malloc(spapr->rtas_size);
>> -    if (load_image_size(filename, spapr->rtas_blob, spapr->rtas_size) < 0) {
>> -        error_report("Could not load LPAR rtas '%s'", filename);
>> -        exit(1);
>> -    }
>> -    if (spapr->rtas_size > RTAS_MAX_SIZE) {
>> -        error_report("RTAS too big ! 0x%zx bytes (max is 0x%x)",
>> -                     (size_t)spapr->rtas_size, RTAS_MAX_SIZE);
>> -        exit(1);
>> -    }
>> -    g_free(filename);
>> -
>>      /* Set up RTAS event infrastructure */
>>      spapr_events_init(spapr);
>>  
>> diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
>> index bee3835214..8d8d8cdfcb 100644
>> --- a/hw/ppc/spapr_rtas.c
>> +++ b/hw/ppc/spapr_rtas.c
>> @@ -477,47 +477,6 @@ void spapr_dt_rtas_tokens(void *fdt, int rtas)
>>      }
>>  }
>>  
>> -void spapr_load_rtas(SpaprMachineState *spapr, void *fdt, hwaddr addr)
>> -{
>> -    int rtas_node;
>> -    int ret;
>> -
>> -    /* Copy RTAS blob into guest RAM */
>> -    cpu_physical_memory_write(addr, spapr->rtas_blob, spapr->rtas_size);
>> -
>> -    ret = fdt_add_mem_rsv(fdt, addr, spapr->rtas_size);
>> -    if (ret < 0) {
>> -        error_report("Couldn't add RTAS reserve entry: %s",
>> -                     fdt_strerror(ret));
>> -        exit(1);
>> -    }
>> -
>> -    /* Update the device tree with the blob's location */
>> -    rtas_node = fdt_path_offset(fdt, "/rtas");
>> -    assert(rtas_node >= 0);
>> -
>> -    ret = fdt_setprop_cell(fdt, rtas_node, "linux,rtas-base", addr);
>> -    if (ret < 0) {
>> -        error_report("Couldn't add linux,rtas-base property: %s",
>> -                     fdt_strerror(ret));
>> -        exit(1);
>> -    }
>> -
>> -    ret = fdt_setprop_cell(fdt, rtas_node, "linux,rtas-entry", addr);
>> -    if (ret < 0) {
>> -        error_report("Couldn't add linux,rtas-entry property: %s",
>> -                     fdt_strerror(ret));
>> -        exit(1);
>> -    }
>> -
>> -    ret = fdt_setprop_cell(fdt, rtas_node, "rtas-size", spapr->rtas_size);
>> -    if (ret < 0) {
>> -        error_report("Couldn't add rtas-size property: %s",
>> -                     fdt_strerror(ret));
>> -        exit(1);
>> -    }
>> -}
>> -
>>  static void core_rtas_register_types(void)
>>  {
>>      spapr_rtas_register(RTAS_DISPLAY_CHARACTER, "display-character",
>> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
>> index dfec8e8e76..cbd1a4c9f3 100644
>> --- a/include/hw/ppc/spapr.h
>> +++ b/include/hw/ppc/spapr.h
>> @@ -154,8 +154,6 @@ struct SpaprMachineState {
>>  
>>      hwaddr rma_size;
>>      int vrma_adjust;
>> -    ssize_t rtas_size;
>> -    void *rtas_blob;
>>      uint32_t fdt_size;
>>      uint32_t fdt_initial_size;
>>      void *fdt_blob;
>> diff --git a/pc-bios/spapr-rtas.bin b/pc-bios/spapr-rtas.bin
>> deleted file mode 100644
>> index fc24c8ed8b..0000000000
>> Binary files a/pc-bios/spapr-rtas.bin and /dev/null differ
>> diff --git a/pc-bios/spapr-rtas/Makefile b/pc-bios/spapr-rtas/Makefile
>> deleted file mode 100644
>> index 4b9bb12306..0000000000
>> --- a/pc-bios/spapr-rtas/Makefile
>> +++ /dev/null
>> @@ -1,27 +0,0 @@
>> -all: build-all
>> -# Dummy command so that make thinks it has done something
>> -	@true
>> -
>> -include ../../config-host.mak
>> -include $(SRC_PATH)/rules.mak
>> -
>> -$(call set-vpath, $(SRC_PATH)/pc-bios/spapr-rtas)
>> -
>> -.PHONY : all clean build-all
>> -
>> -#CFLAGS += -I$(SRC_PATH)
>> -#QEMU_CFLAGS = $(CFLAGS)
>> -
>> -build-all: spapr-rtas.bin
>> -
>> -%.o: %.S
>> -	$(call quiet-command,$(CCAS) -mbig -c -o $@ $<,"CCAS","$(TARGET_DIR)$@")
>> -
>> -%.img: %.o
>> -	$(call quiet-command,$(CC) -nostdlib -mbig -o $@ $<,"Building","$(TARGET_DIR)$@")
>> -
>> -%.bin: %.img
>> -	$(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@,"Building","$(TARGET_DIR)$@")
>> -
>> -clean:
>> -	rm -f *.o *.d *.img *.bin *~
>> diff --git a/pc-bios/spapr-rtas/spapr-rtas.S b/pc-bios/spapr-rtas/spapr-rtas.S
>> deleted file mode 100644
>> index 903bec2150..0000000000
>> --- a/pc-bios/spapr-rtas/spapr-rtas.S
>> +++ /dev/null
>> @@ -1,37 +0,0 @@
>> -/*
>> - * QEMU PowerPC pSeries Logical Partition (aka sPAPR) hardware System Emulator
>> - *
>> - * Trivial in-partition RTAS implementation, based on a hypercall
>> - *
>> - * Copyright (c) 2010,2011 David Gibson, IBM Corporation.
>> - *
>> - * Permission is hereby granted, free of charge, to any person obtaining a copy
>> - * of this software and associated documentation files (the "Software"), to deal
>> - * in the Software without restriction, including without limitation the rights
>> - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
>> - * copies of the Software, and to permit persons to whom the Software is
>> - * furnished to do so, subject to the following conditions:
>> - *
>> - * The above copyright notice and this permission notice shall be included in
>> - * all copies or substantial portions of the Software.
>> - *
>> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
>> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
>> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
>> - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>> - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
>> - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
>> - * THE SOFTWARE.
>> - *
>> - */
>> -
>> -#define KVMPPC_HCALL_BASE       0xf000
>> -#define KVMPPC_H_RTAS           (KVMPPC_HCALL_BASE + 0x0)
>> -
>> -.globl	_start
>> -_start:
>> -	mr	4,3
>> -	lis	3,KVMPPC_H_RTAS@h
>> -	ori	3,3,KVMPPC_H_RTAS@l
>> -	sc	1
>> -	blr
>
Greg Kurz Sept. 12, 2019, 7:20 a.m. UTC | #3
On Thu, 12 Sep 2019 11:50:53 +1000
Alexey Kardashevskiy <aik@ozlabs.ru> wrote:

> 
> 
> On 11/09/2019 19:16, Greg Kurz wrote:
> > On Wed, 11 Sep 2019 14:04:51 +1000
> > David Gibson <david@gibson.dropbear.id.au> wrote:
> > 
> >> From: Alexey Kardashevskiy <aik@ozlabs.ru>
> >>
> >> SLOF implements one itself so let's remove it from QEMU. It is one less
> >> image and simpler setup as the RTAS blob never stays in its initial place
> >> anyway as the guest OS always decides where to put it.
> >>
> >> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> >> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> >> ---
> >>  MAINTAINERS                     |   2 --
> >>  Makefile                        |   2 +-
> >>  configure                       |   6 +----
> >>  hw/ppc/spapr.c                  |  32 ++-----------------------
> >>  hw/ppc/spapr_rtas.c             |  41 --------------------------------
> >>  include/hw/ppc/spapr.h          |   2 --
> >>  pc-bios/spapr-rtas.bin          | Bin 20 -> 0 bytes
> >>  pc-bios/spapr-rtas/Makefile     |  27 ---------------------
> >>  pc-bios/spapr-rtas/spapr-rtas.S |  37 ----------------------------
> >>  9 files changed, 4 insertions(+), 145 deletions(-)
> >>  delete mode 100644 pc-bios/spapr-rtas.bin
> >>  delete mode 100644 pc-bios/spapr-rtas/Makefile
> >>  delete mode 100644 pc-bios/spapr-rtas/spapr-rtas.S
> >>
> > 
> > Nice diffstat :)
> > 
> > But pwclient fails to apply it :(
> > 
> > [greg@bahia qemu-spapr]$ pwclient git-am 1160642
> > Applying patch #1160642 using 'git am'
> > Description: [6/7] spapr: Stop providing RTAS blob
> > Applying: spapr: Stop providing RTAS blob
> > error: cannot apply binary patch to 'pc-bios/spapr-rtas.bin' without full index line
> 
> 
> Some git feature/bug with removing binaries:
> 
> https://stackoverflow.com/questions/17152171/git-cannot-apply-binary-patch-without-full-index-line
> 
> 
> David posted with this:
> ===
> diff --git a/pc-bios/spapr-rtas.bin b/pc-bios/spapr-rtas.bin
> deleted file mode 100644
> index fc24c8ed8b..0000000000
> Binary files a/pc-bios/spapr-rtas.bin and /dev/null differ
> ===
> 
> And my patch has a bigger chunk:
> 
> git format-patch -1 --stdout 1a5efb9283c2
> (there is no additional flag needed to my git 2.17.1):
> 
> ===
> diff --git a/pc-bios/spapr-rtas.bin b/pc-bios/spapr-rtas.bin
> deleted file mode 100644
> index
> fc24c8ed8b92a3a441aed6e2bd013b2ccece9229..0000000000000000000000000000000000000000
> GIT binary patch
> literal 0
> HcmV?d00001
> 
> literal 20
> bcmb<Pk*=^wU|>i{{=neEz@X&Uz@PvCJTV0q
> ===
> 
> I do not know why are these different.
> 
> Thy this one:
> https://patchwork.ozlabs.org/patch/1132443/
> 

This one applies cleanly.

And so does:

https://github.com/dgibson/qemu/commit/c14ffa033ea0519d235f172723dd465ab6bf9777.patch

from David's cas branch... That's confusing.

Anyway, the non-binary changes look good.

Reviewed-by: Greg Kurz <groug@kaod.org>

> 
> 
> > error: pc-bios/spapr-rtas.bin: patch does not apply
> > Patch failed at 0001 spapr: Stop providing RTAS blob
> > hint: Use 'git am --show-current-patch' to see the failed patch
> > When you have resolved this problem, run "git am --continue".
> > If you prefer to skip this patch, run "git am --skip" instead.
> > To restore the original branch and stop patching, run "git am --abort".
> > 'git am' failed with exit status 128
> > 
> > and
> > 
> > [greg@bahia qemu-spapr]$ git am --show-current-patch | patch -p1 --merge 
> > patching file MAINTAINERS
> > patching file Makefile
> > patching file configure
> > patching file hw/ppc/spapr.c
> > patching file hw/ppc/spapr_rtas.c
> > patching file include/hw/ppc/spapr.h
> > patching file pc-bios/spapr-rtas.bin
> > Not deleting file pc-bios/spapr-rtas.bin as content differs from patch
> > 
> > Not sure what's happening here...
> > 
> > patching file pc-bios/spapr-rtas/Makefile
> > patching file pc-bios/spapr-rtas/spapr-rtas.S
> > 
> >> diff --git a/MAINTAINERS b/MAINTAINERS
> >> index 50eaf005f4..9823f40213 100644
> >> --- a/MAINTAINERS
> >> +++ b/MAINTAINERS
> >> @@ -1077,8 +1077,6 @@ F: hw/*/spapr*
> >>  F: include/hw/*/spapr*
> >>  F: hw/*/xics*
> >>  F: include/hw/*/xics*
> >> -F: pc-bios/spapr-rtas/*
> >> -F: pc-bios/spapr-rtas.bin
> >>  F: pc-bios/slof.bin
> >>  F: docs/specs/ppc-spapr-hcalls.txt
> >>  F: docs/specs/ppc-spapr-hotplug.txt
> >> diff --git a/Makefile b/Makefile
> >> index ae17a83067..4637f95371 100644
> >> --- a/Makefile
> >> +++ b/Makefile
> >> @@ -764,7 +764,7 @@ qemu-nsis.bmp \
> >>  bamboo.dtb canyonlands.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb \
> >>  multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin \
> >>  s390-ccw.img s390-netboot.img \
> >> -spapr-rtas.bin slof.bin skiboot.lid \
> >> +slof.bin skiboot.lid \
> >>  palcode-clipper \
> >>  u-boot.e500 u-boot-sam460-20100605.bin \
> >>  qemu_vga.ndrv \
> >> diff --git a/configure b/configure
> >> index 95134c0180..b79d38592b 100755
> >> --- a/configure
> >> +++ b/configure
> >> @@ -6211,9 +6211,6 @@ if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \
> >>          fi
> >>      done
> >>  fi
> >> -if test "$ARCH" = "ppc64" && test "$targetos" != "Darwin" ; then
> >> -  roms="$roms spapr-rtas"
> >> -fi
> >>  
> >>  # Only build s390-ccw bios if we're on s390x and the compiler has -march=z900
> >>  if test "$cpu" = "s390x" ; then
> >> @@ -7930,14 +7927,13 @@ fi
> >>  DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
> >>  DIRS="$DIRS tests/fp tests/qgraph"
> >>  DIRS="$DIRS docs docs/interop fsdev scsi"
> >> -DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
> >> +DIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
> >>  DIRS="$DIRS roms/seabios roms/vgabios"
> >>  LINKS="Makefile tests/tcg/Makefile"
> >>  LINKS="$LINKS tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
> >>  LINKS="$LINKS tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
> >>  LINKS="$LINKS tests/fp/Makefile"
> >>  LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
> >> -LINKS="$LINKS pc-bios/spapr-rtas/Makefile"
> >>  LINKS="$LINKS pc-bios/s390-ccw/Makefile"
> >>  LINKS="$LINKS roms/seabios/Makefile roms/vgabios/Makefile"
> >>  LINKS="$LINKS pc-bios/qemu-icon.bmp"
> >> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> >> index d18744268f..5a919a6cc1 100644
> >> --- a/hw/ppc/spapr.c
> >> +++ b/hw/ppc/spapr.c
> >> @@ -94,7 +94,6 @@
> >>   * We load our kernel at 4M, leaving space for SLOF initial image
> >>   */
> >>  #define FDT_MAX_SIZE            0x100000
> >> -#define RTAS_MAX_SIZE           0x10000
> >>  #define RTAS_MAX_ADDR           0x80000000 /* RTAS must stay below that */
> >>  #define FW_MAX_SIZE             0x400000
> >>  #define FW_FILE_NAME            "slof.bin"
> >> @@ -1721,8 +1720,7 @@ static void spapr_machine_reset(MachineState *machine)
> >>  {
> >>      SpaprMachineState *spapr = SPAPR_MACHINE(machine);
> >>      PowerPCCPU *first_ppc_cpu;
> >> -    uint32_t rtas_limit;
> >> -    hwaddr rtas_addr, fdt_addr;
> >> +    hwaddr fdt_addr;
> >>      void *fdt;
> >>      int rc;
> >>  
> >> @@ -1786,14 +1784,10 @@ static void spapr_machine_reset(MachineState *machine)
> >>       * or just below 2GB, whichever is lower, so that it can be
> >>       * processed with 32-bit real mode code if necessary
> >>       */
> >> -    rtas_limit = MIN(spapr->rma_size, RTAS_MAX_ADDR);
> >> -    rtas_addr = rtas_limit - RTAS_MAX_SIZE;
> >> -    fdt_addr = rtas_addr - FDT_MAX_SIZE;
> >> +    fdt_addr = MIN(spapr->rma_size, RTAS_MAX_ADDR) - FDT_MAX_SIZE;
> >>  
> >>      fdt = spapr_build_fdt(spapr);
> >>  
> >> -    spapr_load_rtas(spapr, fdt, rtas_addr);
> >> -
> >>      rc = fdt_pack(fdt);
> >>  
> >>      /* Should only fail if we've built a corrupted tree */
> >> @@ -2953,28 +2947,6 @@ static void spapr_machine_init(MachineState *machine)
> >>          spapr_create_lmb_dr_connectors(spapr);
> >>      }
> >>  
> >> -    filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, "spapr-rtas.bin");
> >> -    if (!filename) {
> >> -        error_report("Could not find LPAR rtas '%s'", "spapr-rtas.bin");
> >> -        exit(1);
> >> -    }
> >> -    spapr->rtas_size = get_image_size(filename);
> >> -    if (spapr->rtas_size < 0) {
> >> -        error_report("Could not get size of LPAR rtas '%s'", filename);
> >> -        exit(1);
> >> -    }
> >> -    spapr->rtas_blob = g_malloc(spapr->rtas_size);
> >> -    if (load_image_size(filename, spapr->rtas_blob, spapr->rtas_size) < 0) {
> >> -        error_report("Could not load LPAR rtas '%s'", filename);
> >> -        exit(1);
> >> -    }
> >> -    if (spapr->rtas_size > RTAS_MAX_SIZE) {
> >> -        error_report("RTAS too big ! 0x%zx bytes (max is 0x%x)",
> >> -                     (size_t)spapr->rtas_size, RTAS_MAX_SIZE);
> >> -        exit(1);
> >> -    }
> >> -    g_free(filename);
> >> -
> >>      /* Set up RTAS event infrastructure */
> >>      spapr_events_init(spapr);
> >>  
> >> diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
> >> index bee3835214..8d8d8cdfcb 100644
> >> --- a/hw/ppc/spapr_rtas.c
> >> +++ b/hw/ppc/spapr_rtas.c
> >> @@ -477,47 +477,6 @@ void spapr_dt_rtas_tokens(void *fdt, int rtas)
> >>      }
> >>  }
> >>  
> >> -void spapr_load_rtas(SpaprMachineState *spapr, void *fdt, hwaddr addr)
> >> -{
> >> -    int rtas_node;
> >> -    int ret;
> >> -
> >> -    /* Copy RTAS blob into guest RAM */
> >> -    cpu_physical_memory_write(addr, spapr->rtas_blob, spapr->rtas_size);
> >> -
> >> -    ret = fdt_add_mem_rsv(fdt, addr, spapr->rtas_size);
> >> -    if (ret < 0) {
> >> -        error_report("Couldn't add RTAS reserve entry: %s",
> >> -                     fdt_strerror(ret));
> >> -        exit(1);
> >> -    }
> >> -
> >> -    /* Update the device tree with the blob's location */
> >> -    rtas_node = fdt_path_offset(fdt, "/rtas");
> >> -    assert(rtas_node >= 0);
> >> -
> >> -    ret = fdt_setprop_cell(fdt, rtas_node, "linux,rtas-base", addr);
> >> -    if (ret < 0) {
> >> -        error_report("Couldn't add linux,rtas-base property: %s",
> >> -                     fdt_strerror(ret));
> >> -        exit(1);
> >> -    }
> >> -
> >> -    ret = fdt_setprop_cell(fdt, rtas_node, "linux,rtas-entry", addr);
> >> -    if (ret < 0) {
> >> -        error_report("Couldn't add linux,rtas-entry property: %s",
> >> -                     fdt_strerror(ret));
> >> -        exit(1);
> >> -    }
> >> -
> >> -    ret = fdt_setprop_cell(fdt, rtas_node, "rtas-size", spapr->rtas_size);
> >> -    if (ret < 0) {
> >> -        error_report("Couldn't add rtas-size property: %s",
> >> -                     fdt_strerror(ret));
> >> -        exit(1);
> >> -    }
> >> -}
> >> -
> >>  static void core_rtas_register_types(void)
> >>  {
> >>      spapr_rtas_register(RTAS_DISPLAY_CHARACTER, "display-character",
> >> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> >> index dfec8e8e76..cbd1a4c9f3 100644
> >> --- a/include/hw/ppc/spapr.h
> >> +++ b/include/hw/ppc/spapr.h
> >> @@ -154,8 +154,6 @@ struct SpaprMachineState {
> >>  
> >>      hwaddr rma_size;
> >>      int vrma_adjust;
> >> -    ssize_t rtas_size;
> >> -    void *rtas_blob;
> >>      uint32_t fdt_size;
> >>      uint32_t fdt_initial_size;
> >>      void *fdt_blob;
> >> diff --git a/pc-bios/spapr-rtas.bin b/pc-bios/spapr-rtas.bin
> >> deleted file mode 100644
> >> index fc24c8ed8b..0000000000
> >> Binary files a/pc-bios/spapr-rtas.bin and /dev/null differ
> >> diff --git a/pc-bios/spapr-rtas/Makefile b/pc-bios/spapr-rtas/Makefile
> >> deleted file mode 100644
> >> index 4b9bb12306..0000000000
> >> --- a/pc-bios/spapr-rtas/Makefile
> >> +++ /dev/null
> >> @@ -1,27 +0,0 @@
> >> -all: build-all
> >> -# Dummy command so that make thinks it has done something
> >> -	@true
> >> -
> >> -include ../../config-host.mak
> >> -include $(SRC_PATH)/rules.mak
> >> -
> >> -$(call set-vpath, $(SRC_PATH)/pc-bios/spapr-rtas)
> >> -
> >> -.PHONY : all clean build-all
> >> -
> >> -#CFLAGS += -I$(SRC_PATH)
> >> -#QEMU_CFLAGS = $(CFLAGS)
> >> -
> >> -build-all: spapr-rtas.bin
> >> -
> >> -%.o: %.S
> >> -	$(call quiet-command,$(CCAS) -mbig -c -o $@ $<,"CCAS","$(TARGET_DIR)$@")
> >> -
> >> -%.img: %.o
> >> -	$(call quiet-command,$(CC) -nostdlib -mbig -o $@ $<,"Building","$(TARGET_DIR)$@")
> >> -
> >> -%.bin: %.img
> >> -	$(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@,"Building","$(TARGET_DIR)$@")
> >> -
> >> -clean:
> >> -	rm -f *.o *.d *.img *.bin *~
> >> diff --git a/pc-bios/spapr-rtas/spapr-rtas.S b/pc-bios/spapr-rtas/spapr-rtas.S
> >> deleted file mode 100644
> >> index 903bec2150..0000000000
> >> --- a/pc-bios/spapr-rtas/spapr-rtas.S
> >> +++ /dev/null
> >> @@ -1,37 +0,0 @@
> >> -/*
> >> - * QEMU PowerPC pSeries Logical Partition (aka sPAPR) hardware System Emulator
> >> - *
> >> - * Trivial in-partition RTAS implementation, based on a hypercall
> >> - *
> >> - * Copyright (c) 2010,2011 David Gibson, IBM Corporation.
> >> - *
> >> - * Permission is hereby granted, free of charge, to any person obtaining a copy
> >> - * of this software and associated documentation files (the "Software"), to deal
> >> - * in the Software without restriction, including without limitation the rights
> >> - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> >> - * copies of the Software, and to permit persons to whom the Software is
> >> - * furnished to do so, subject to the following conditions:
> >> - *
> >> - * The above copyright notice and this permission notice shall be included in
> >> - * all copies or substantial portions of the Software.
> >> - *
> >> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> >> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> >> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> >> - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> >> - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> >> - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> >> - * THE SOFTWARE.
> >> - *
> >> - */
> >> -
> >> -#define KVMPPC_HCALL_BASE       0xf000
> >> -#define KVMPPC_H_RTAS           (KVMPPC_HCALL_BASE + 0x0)
> >> -
> >> -.globl	_start
> >> -_start:
> >> -	mr	4,3
> >> -	lis	3,KVMPPC_H_RTAS@h
> >> -	ori	3,3,KVMPPC_H_RTAS@l
> >> -	sc	1
> >> -	blr
> > 
>
diff mbox series

Patch

diff --git a/MAINTAINERS b/MAINTAINERS
index 50eaf005f4..9823f40213 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1077,8 +1077,6 @@  F: hw/*/spapr*
 F: include/hw/*/spapr*
 F: hw/*/xics*
 F: include/hw/*/xics*
-F: pc-bios/spapr-rtas/*
-F: pc-bios/spapr-rtas.bin
 F: pc-bios/slof.bin
 F: docs/specs/ppc-spapr-hcalls.txt
 F: docs/specs/ppc-spapr-hotplug.txt
diff --git a/Makefile b/Makefile
index ae17a83067..4637f95371 100644
--- a/Makefile
+++ b/Makefile
@@ -764,7 +764,7 @@  qemu-nsis.bmp \
 bamboo.dtb canyonlands.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb \
 multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin \
 s390-ccw.img s390-netboot.img \
-spapr-rtas.bin slof.bin skiboot.lid \
+slof.bin skiboot.lid \
 palcode-clipper \
 u-boot.e500 u-boot-sam460-20100605.bin \
 qemu_vga.ndrv \
diff --git a/configure b/configure
index 95134c0180..b79d38592b 100755
--- a/configure
+++ b/configure
@@ -6211,9 +6211,6 @@  if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \
         fi
     done
 fi
-if test "$ARCH" = "ppc64" && test "$targetos" != "Darwin" ; then
-  roms="$roms spapr-rtas"
-fi
 
 # Only build s390-ccw bios if we're on s390x and the compiler has -march=z900
 if test "$cpu" = "s390x" ; then
@@ -7930,14 +7927,13 @@  fi
 DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
 DIRS="$DIRS tests/fp tests/qgraph"
 DIRS="$DIRS docs docs/interop fsdev scsi"
-DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
+DIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
 DIRS="$DIRS roms/seabios roms/vgabios"
 LINKS="Makefile tests/tcg/Makefile"
 LINKS="$LINKS tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
 LINKS="$LINKS tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
 LINKS="$LINKS tests/fp/Makefile"
 LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
-LINKS="$LINKS pc-bios/spapr-rtas/Makefile"
 LINKS="$LINKS pc-bios/s390-ccw/Makefile"
 LINKS="$LINKS roms/seabios/Makefile roms/vgabios/Makefile"
 LINKS="$LINKS pc-bios/qemu-icon.bmp"
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index d18744268f..5a919a6cc1 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -94,7 +94,6 @@ 
  * We load our kernel at 4M, leaving space for SLOF initial image
  */
 #define FDT_MAX_SIZE            0x100000
-#define RTAS_MAX_SIZE           0x10000
 #define RTAS_MAX_ADDR           0x80000000 /* RTAS must stay below that */
 #define FW_MAX_SIZE             0x400000
 #define FW_FILE_NAME            "slof.bin"
@@ -1721,8 +1720,7 @@  static void spapr_machine_reset(MachineState *machine)
 {
     SpaprMachineState *spapr = SPAPR_MACHINE(machine);
     PowerPCCPU *first_ppc_cpu;
-    uint32_t rtas_limit;
-    hwaddr rtas_addr, fdt_addr;
+    hwaddr fdt_addr;
     void *fdt;
     int rc;
 
@@ -1786,14 +1784,10 @@  static void spapr_machine_reset(MachineState *machine)
      * or just below 2GB, whichever is lower, so that it can be
      * processed with 32-bit real mode code if necessary
      */
-    rtas_limit = MIN(spapr->rma_size, RTAS_MAX_ADDR);
-    rtas_addr = rtas_limit - RTAS_MAX_SIZE;
-    fdt_addr = rtas_addr - FDT_MAX_SIZE;
+    fdt_addr = MIN(spapr->rma_size, RTAS_MAX_ADDR) - FDT_MAX_SIZE;
 
     fdt = spapr_build_fdt(spapr);
 
-    spapr_load_rtas(spapr, fdt, rtas_addr);
-
     rc = fdt_pack(fdt);
 
     /* Should only fail if we've built a corrupted tree */
@@ -2953,28 +2947,6 @@  static void spapr_machine_init(MachineState *machine)
         spapr_create_lmb_dr_connectors(spapr);
     }
 
-    filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, "spapr-rtas.bin");
-    if (!filename) {
-        error_report("Could not find LPAR rtas '%s'", "spapr-rtas.bin");
-        exit(1);
-    }
-    spapr->rtas_size = get_image_size(filename);
-    if (spapr->rtas_size < 0) {
-        error_report("Could not get size of LPAR rtas '%s'", filename);
-        exit(1);
-    }
-    spapr->rtas_blob = g_malloc(spapr->rtas_size);
-    if (load_image_size(filename, spapr->rtas_blob, spapr->rtas_size) < 0) {
-        error_report("Could not load LPAR rtas '%s'", filename);
-        exit(1);
-    }
-    if (spapr->rtas_size > RTAS_MAX_SIZE) {
-        error_report("RTAS too big ! 0x%zx bytes (max is 0x%x)",
-                     (size_t)spapr->rtas_size, RTAS_MAX_SIZE);
-        exit(1);
-    }
-    g_free(filename);
-
     /* Set up RTAS event infrastructure */
     spapr_events_init(spapr);
 
diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
index bee3835214..8d8d8cdfcb 100644
--- a/hw/ppc/spapr_rtas.c
+++ b/hw/ppc/spapr_rtas.c
@@ -477,47 +477,6 @@  void spapr_dt_rtas_tokens(void *fdt, int rtas)
     }
 }
 
-void spapr_load_rtas(SpaprMachineState *spapr, void *fdt, hwaddr addr)
-{
-    int rtas_node;
-    int ret;
-
-    /* Copy RTAS blob into guest RAM */
-    cpu_physical_memory_write(addr, spapr->rtas_blob, spapr->rtas_size);
-
-    ret = fdt_add_mem_rsv(fdt, addr, spapr->rtas_size);
-    if (ret < 0) {
-        error_report("Couldn't add RTAS reserve entry: %s",
-                     fdt_strerror(ret));
-        exit(1);
-    }
-
-    /* Update the device tree with the blob's location */
-    rtas_node = fdt_path_offset(fdt, "/rtas");
-    assert(rtas_node >= 0);
-
-    ret = fdt_setprop_cell(fdt, rtas_node, "linux,rtas-base", addr);
-    if (ret < 0) {
-        error_report("Couldn't add linux,rtas-base property: %s",
-                     fdt_strerror(ret));
-        exit(1);
-    }
-
-    ret = fdt_setprop_cell(fdt, rtas_node, "linux,rtas-entry", addr);
-    if (ret < 0) {
-        error_report("Couldn't add linux,rtas-entry property: %s",
-                     fdt_strerror(ret));
-        exit(1);
-    }
-
-    ret = fdt_setprop_cell(fdt, rtas_node, "rtas-size", spapr->rtas_size);
-    if (ret < 0) {
-        error_report("Couldn't add rtas-size property: %s",
-                     fdt_strerror(ret));
-        exit(1);
-    }
-}
-
 static void core_rtas_register_types(void)
 {
     spapr_rtas_register(RTAS_DISPLAY_CHARACTER, "display-character",
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index dfec8e8e76..cbd1a4c9f3 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -154,8 +154,6 @@  struct SpaprMachineState {
 
     hwaddr rma_size;
     int vrma_adjust;
-    ssize_t rtas_size;
-    void *rtas_blob;
     uint32_t fdt_size;
     uint32_t fdt_initial_size;
     void *fdt_blob;
diff --git a/pc-bios/spapr-rtas.bin b/pc-bios/spapr-rtas.bin
deleted file mode 100644
index fc24c8ed8b..0000000000
Binary files a/pc-bios/spapr-rtas.bin and /dev/null differ
diff --git a/pc-bios/spapr-rtas/Makefile b/pc-bios/spapr-rtas/Makefile
deleted file mode 100644
index 4b9bb12306..0000000000
--- a/pc-bios/spapr-rtas/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@ 
-all: build-all
-# Dummy command so that make thinks it has done something
-	@true
-
-include ../../config-host.mak
-include $(SRC_PATH)/rules.mak
-
-$(call set-vpath, $(SRC_PATH)/pc-bios/spapr-rtas)
-
-.PHONY : all clean build-all
-
-#CFLAGS += -I$(SRC_PATH)
-#QEMU_CFLAGS = $(CFLAGS)
-
-build-all: spapr-rtas.bin
-
-%.o: %.S
-	$(call quiet-command,$(CCAS) -mbig -c -o $@ $<,"CCAS","$(TARGET_DIR)$@")
-
-%.img: %.o
-	$(call quiet-command,$(CC) -nostdlib -mbig -o $@ $<,"Building","$(TARGET_DIR)$@")
-
-%.bin: %.img
-	$(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@,"Building","$(TARGET_DIR)$@")
-
-clean:
-	rm -f *.o *.d *.img *.bin *~
diff --git a/pc-bios/spapr-rtas/spapr-rtas.S b/pc-bios/spapr-rtas/spapr-rtas.S
deleted file mode 100644
index 903bec2150..0000000000
--- a/pc-bios/spapr-rtas/spapr-rtas.S
+++ /dev/null
@@ -1,37 +0,0 @@ 
-/*
- * QEMU PowerPC pSeries Logical Partition (aka sPAPR) hardware System Emulator
- *
- * Trivial in-partition RTAS implementation, based on a hypercall
- *
- * Copyright (c) 2010,2011 David Gibson, IBM Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- */
-
-#define KVMPPC_HCALL_BASE       0xf000
-#define KVMPPC_H_RTAS           (KVMPPC_HCALL_BASE + 0x0)
-
-.globl	_start
-_start:
-	mr	4,3
-	lis	3,KVMPPC_H_RTAS@h
-	ori	3,3,KVMPPC_H_RTAS@l
-	sc	1
-	blr