choose the size of the last region for d_stripsize instead of the first;
this fixes geom_redboot on boards that have multiple parts/regions as it uses the value to locate the FIS directory which is in the last erase region of flash
This commit is contained in:
parent
41f0c91517
commit
7bed4560f3
@ -99,9 +99,16 @@ cfi_disk_attach(device_t dev)
|
||||
sc->disk->d_mediasize = sc->parent->sc_size;
|
||||
sc->disk->d_maxsize = CFI_DISK_MAXIOSIZE;
|
||||
/* NB: use stripesize to hold the erase/region size */
|
||||
if (sc->parent->sc_regions)
|
||||
sc->disk->d_stripesize = sc->parent->sc_region->r_blksz;
|
||||
else
|
||||
if (sc->parent->sc_regions) {
|
||||
/*
|
||||
* Multiple regions, use the last one. This is a
|
||||
* total hack as it's (presently) used only by
|
||||
* geom_redboot to locate the FIS directory which
|
||||
* lies at the start of the last erase region.
|
||||
*/
|
||||
sc->disk->d_stripesize =
|
||||
sc->parent->sc_region[sc->parent->sc_regions-1].r_blksz;
|
||||
} else
|
||||
sc->disk->d_stripesize = sc->disk->d_mediasize;
|
||||
sc->disk->d_drv1 = sc;
|
||||
disk_create(sc->disk, DISK_VERSION);
|
||||
|
Loading…
x
Reference in New Issue
Block a user