On Fri, Aug 12, 2022 at 09:41:59AM +0000, Klemens Nanni wrote:
> Here's the adapted diff for arm64 minus manual bits to avoid churn for
> now.
> 
> installboot(8) needs softraid(4) support (see my diff on tech@), but
> besides that, root on passphrase 1C softraid on arm64 works as expected:
> 
>       # df /
>       Filesystem  512-blocks      Used     Avail Capacity  Mounted on
>       /dev/sd4a      2331356    161952   2052840     7%    /
>       # bioctl sd4
>       Volume      Status               Size Device
>       softraid0 0 Online        10741585920 sd4     RAID1C
>                 0 Online        10741585920 0:0.0   noencl <sd1a>
>                 1 Online        10741585920 0:1.0   noencl <sd3a>

Great! Thank you for covering additional platforms.

ok stsp@

> Index: conf.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/arm64/stand/efiboot/conf.c,v
> retrieving revision 1.39
> diff -u -p -r1.39 conf.c
> --- conf.c    30 Jul 2022 21:06:54 -0000      1.39
> +++ conf.c    11 Aug 2022 14:42:01 -0000
> @@ -46,7 +46,7 @@
>  #include "efipxe.h"
>  #include "softraid_arm64.h"
>  
> -const char version[] = "1.11";
> +const char version[] = "1.12";
>  int  debug = 0;
>  
>  struct fs_ops file_system[] = {
> Index: softraid_arm64.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/arm64/stand/efiboot/softraid_arm64.c,v
> retrieving revision 1.3
> diff -u -p -r1.3 softraid_arm64.c
> --- softraid_arm64.c  2 Jun 2021 22:44:27 -0000       1.3
> +++ softraid_arm64.c  11 Aug 2022 14:43:52 -0000
> @@ -285,6 +285,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)
> @@ -341,7 +342,7 @@ sr_strategy(struct sr_boot_volume *bv, i
>               /* XXX - If I/O failed we should try another chunk... */
>               return dip->strategy(dip, rw, blk, size, buf, rsize);
>  
> -     } else if (bv->sbv_level == 'C') {
> +     } else if (bv->sbv_level == 'C' || bv->sbv_level == 0x1C) {
>  
>               /* Select first online chunk. */
>               SLIST_FOREACH(bc, &bv->sbv_chunks, sbc_link)
> @@ -604,7 +605,8 @@ sropen(struct open_file *f, ...)
>               return EADAPT;
>       }
>  
> -     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;
>  
> 
> 

Reply via email to