because the header on firmware commands causes the rest of the message to be unaligned we basically need to bounce the contents of the message in and out of what is submitted to the hardware. rather than have the callers of arc_msgbuf do that, make arc_msgbuf do it for them. while we're here, make arc_msgbuf do the checksumming and length checks so the callers dont have to do that either.
because the header on firmware commands causes the rest of the message to
be unaligned we basically need to bounce the contents of the message in and
out of what is submitted to the hardware. rather than have the callers of
arc_msgbuf do that, make arc_msgbuf do it for them. while we're here, make
arc_msgbuf do the checksumming and length checks so the callers dont have
to do that either.

this adds an alternative to arc_msgbuf that does the new functionality and
cuts arc_bio_alarm_state over to using it. i'll cut the other users of
arc_msgbuf over shortly and remove the old implementation.

orumin/openbsd-efivars,orumin/openbsd-efivars,orumin/openbsd-efivars,orumin/openbsd-efivars