> +static int
> +overriden_lchs_supplied(struct drive_s *drive)
> +{
> + return drive->lchs.cylinder || drive->lchs.head || drive->lchs.sector;
> +}
> + case TRANSLATION_MACHINE:
Hmm, why this name? Doesn't look intuitive to me.
> + desc = "overriden";
I'd name that "host-supplied" or "fw-cfg".
> + cylinders = drive->lchs.cylinder;
> + heads = drive->lchs.head;
> + if (heads > 255)
> + heads = 255;
I suggest to move these sanity checks to overriden_lchs_supplied(), then
ignore the override altogether when heads or sectors is out of range
instead of trying to fixup things.
The other patches look all sane to me.
cheers,
Gerd