On Thu, Sep 01, 2022 at 08:31:04PM +0000, Klemens Nanni wrote:
> This is practically the same diff we already landed for arm64.
> 
> The kernel already supports booting off 1C and with tech@'s
> "installboot: sparc64: fix -r on multi-chunk softraid chunk" diff the
> install process will no longer fail when installing bootstraps onto any
> softraid volume which requires at least two chunks by design.
> 
> Feedback? OK?

ok by me, diff looks fine.

> Index: boot.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/sparc64/stand/ofwboot/boot.c,v
> retrieving revision 1.39
> diff -u -p -r1.39 boot.c
> --- boot.c    4 Aug 2022 09:16:53 -0000       1.39
> +++ boot.c    1 Sep 2022 20:10:55 -0000
> @@ -366,7 +366,8 @@ srbootdev(const char *bootline)
>                       return ENODEV;
>               }
>  
> -             if (bv->sbv_level == 'C' && bv->sbv_keys == NULL)
> +             if ((bv->sbv_level == 'C' || bv->sbv_level == 0x1C) &&
> +                 bv->sbv_keys == NULL)
>                       if (sr_crypto_unlock_volume(bv) != 0)
>                               return EPERM;
>  
> Index: softraid_sparc64.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/sparc64/stand/ofwboot/softraid_sparc64.c,v
> retrieving revision 1.5
> diff -u -p -r1.5 softraid_sparc64.c
> --- softraid_sparc64.c        9 Dec 2020 18:10:19 -0000       1.5
> +++ softraid_sparc64.c        1 Sep 2022 20:08:03 -0000
> @@ -290,6 +290,7 @@ srprobe(void)
>                       break;
>  
>               case 1:
> +             case 0x1C:
>                       if (bv->sbv_chunk_no == bv->sbv_chunks_found)
>                               bv->sbv_state = BIOC_SVONLINE;
>                       else if (bv->sbv_chunks_found > 0)
> @@ -312,7 +313,8 @@ sr_vol_boot_chunk(struct sr_boot_volume 
>  {
>       struct sr_boot_chunk *bc = NULL;
>  
> -     if (bv->sbv_level == 1 || bv->sbv_level == 'C' ) { /* RAID1 or CRYPTO */
> +     if (bv->sbv_level == 1 || bv->sbv_level == 'C' ||
> +         bv->sbv_level == 0x1C) {
>               /* Select first online chunk. */
>               SLIST_FOREACH(bc, &bv->sbv_chunks, sbc_link)
>                       if (bc->sbc_state == BIOC_SDONLINE)
> @@ -368,7 +370,7 @@ sr_strategy(struct sr_boot_volume *bv, i
>               err = strategy(&ofdev, rw, blk, size, buf, rsize);
>               return err;
>  
> -     } else if (bv->sbv_level == 'C') {
> +     } else if (bv->sbv_level == 'C' || bv->sbv_level == 0x1C) {
>               /* XXX - select correct key. */
>               aes_xts_setkey(&ctx, (u_char *)bv->sbv_keys, 64);
>  
> Index: vers.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/sparc64/stand/ofwboot/vers.c,v
> retrieving revision 1.24
> diff -u -p -r1.24 vers.c
> --- vers.c    4 Aug 2022 09:16:53 -0000       1.24
> +++ vers.c    20 Aug 2022 03:59:47 -0000
> @@ -1 +1 @@
> -const char version[] = "1.23";
> +const char version[] = "1.24";
> 

Reply via email to