From mboxrd@z Thu Jan 1 00:00:00 1970 From: AKASHI Takahiro Date: Fri, 19 Apr 2019 13:42:51 +0900 Subject: [U-Boot] [PATCH 3/9] cmd: bootefi: merge efi_install_fdt() and efi_process_fdt() In-Reply-To: References: <20190419032236.8242-1-takahiro.akashi@linaro.org> <20190419032236.8242-4-takahiro.akashi@linaro.org> Message-ID: <20190419044250.GX7158@linaro.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Fri, Apr 19, 2019 at 06:06:08AM +0200, Heinrich Schuchardt wrote: > On 4/19/19 5:22 AM, AKASHI Takahiro wrote: > >This is a preparatory patch for reworking do_bootefi() in later patch. > >For simplicity, merge two functions. > > > >Signed-off-by: AKASHI Takahiro > >--- > > cmd/bootefi.c | 67 +++++++++++++++++++++------------------------------ > > 1 file changed, 28 insertions(+), 39 deletions(-) > > > >diff --git a/cmd/bootefi.c b/cmd/bootefi.c > >index fb6703ce84f3..c6d6eb7312e8 100644 > >--- a/cmd/bootefi.c > >+++ b/cmd/bootefi.c > >@@ -185,62 +185,51 @@ static void efi_carve_out_dt_rsv(void *fdt) > > } > > } > > > >-static efi_status_t efi_install_fdt(ulong fdt_addr) > >-{ > >- bootm_headers_t img = { 0 }; > >- efi_status_t ret; > >- void *fdt; > >- > >- fdt = map_sysmem(fdt_addr, 0); > >- if (fdt_check_header(fdt)) { > >- printf("ERROR: invalid device tree\n"); > >- return EFI_INVALID_PARAMETER; > >- } > >- > >- /* Create memory reservation as indicated by the device tree */ > >- efi_carve_out_dt_rsv(fdt); > >- > >- /* Prepare fdt for payload */ > >- ret = copy_fdt(&fdt); > >- if (ret) > >- return ret; > >- > >- if (image_setup_libfdt(&img, fdt, 0, NULL)) { > >- printf("ERROR: failed to process device tree\n"); > >- return EFI_LOAD_ERROR; > >- } > >- > >- /* Link to it in the efi tables */ > >- ret = efi_install_configuration_table(&efi_guid_fdt, fdt); > >- if (ret != EFI_SUCCESS) > >- return EFI_OUT_OF_RESOURCES; > >- > >- return ret; > >-} > >- > > /** > >- * efi_process_fdt() - process fdt passed by a command argument > >+ * efi_install_fdt() - install fdt passed by a command argument > > * @fdt_opt: pointer to argument > > * Return: status code > > * > > * If specified, fdt will be installed as configuration table, > > * otherwise no fdt will be passed. > > */ > >-static efi_status_t efi_process_fdt(const char *fdt_opt) > >+static efi_status_t efi_install_fdt(const char *fdt_opt) > > { > > unsigned long fdt_addr; > >+ void *fdt; > >+ bootm_headers_t img = { 0 }; > > efi_status_t ret; > > > > if (fdt_opt) { > >+ /* Install device tree */ > > fdt_addr = simple_strtoul(fdt_opt, NULL, 16); > > if (!fdt_addr && *fdt_opt != '0') > > return EFI_INVALID_PARAMETER; > > > >- /* Install device tree */ > >- ret = efi_install_fdt(fdt_addr); > >+ fdt = map_sysmem(fdt_addr, 0); > >+ if (fdt_check_header(fdt)) { > >+ printf("ERROR: invalid device tree\n"); > >+ return EFI_INVALID_PARAMETER; > >+ } > >+ > >+ /* Create memory reservation as indicated by the device tree */ > >+ efi_carve_out_dt_rsv(fdt); > >+ > >+ /* Prepare fdt for payload */ > >+ ret = copy_fdt(&fdt); > >+ if (ret) > >+ return ret; > >+ > >+ if (image_setup_libfdt(&img, fdt, 0, NULL)) { > >+ printf("ERROR: failed to process device tree\n"); > >+ return EFI_LOAD_ERROR; > >+ } > >+ > >+ /* Link to it in the efi tables */ > >+ ret = efi_install_configuration_table(&efi_guid_fdt, fdt); > > if (ret != EFI_SUCCESS) { > > printf("ERROR: failed to install device tree\n"); > >- return ret; > >+ return EFI_OUT_OF_RESOURCES; > > Why do you want to change the return value here? If there is not enough > space efi_install_configuration_table() will return EFI_OUT_OF_RESOURCES > by itself. Other possible error codes are: The original code returns EFI_LOAD_ERROR, so I changed it. > * EFI_INVALID_PARAMETER if you do not provide a GUID. This cannot occur. > * EFI_NOT_FOUND if fdt is NULL. > > I you are ok with it I would apply the patch with the original line > return ret; Go ahead. # You don't need additional patch, Just leave a note in commit message. Thanks, -Takahiro Akashi > Otherwise > > Reviewed-by: Heinrich Schuchardt > > > } > > } else { > > /* Remove device tree. EFI_NOT_FOUND can be ignored here */ > >@@ -456,7 +445,7 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) > > if (argc < 2) > > return CMD_RET_USAGE; > > > >- r = efi_process_fdt(argc > 2 ? argv[2] : NULL); > >+ r = efi_install_fdt(argc > 2 ? argv[2] : NULL); > > if (r == EFI_INVALID_PARAMETER) > > return CMD_RET_USAGE; > > else if (r != EFI_SUCCESS) > > >