> diff --git a/sys/arch/amd64/conf/MICROVM b/sys/arch/amd64/conf/MICROVM
> new file mode 100644
> index 00000000000..5995220bd20
> --- /dev/null
> +++ b/sys/arch/amd64/conf/MICROVM

Did you mean to add the MICROVM config in this change?

The virtio_mmio logic appears to be x86-specific:

> +#include <arch/x86/pv/pvvar.h>
> +#include <xen/hypervisor.h>
> +
> +#include <machine/i82093var.h>
> ...
> +     ioapic = ioapic_find_bybase(irq);
> +
> +     if (ioapic != NULL) {
> +             KASSERT(ioapic->sc_pic.pic_type == PIC_IOAPIC);
> +             pic = &ioapic->sc_pic;
> +             pin = irq - pic->pic_vecbase;
> +             irq = -1;
> +     } else
> +             pic = &i8259_pic;
> +
> +     mpsafe = (0 != (vsc->sc_flags & VIRTIO_F_INTR_MPSAFE));
> +
> +     msc->sc_ih = intr_establish_xname(irq, pic, pin, IST_LEVEL, vsc->sc_ipl,
> +             virtio_mmio_intr, msc, mpsafe, device_xname(vsc->sc_dev));

So I think it should live under sys/arch/x86, or under
sys/dev/virtio/arch/x86, not under sys/dev/virtio directly.

> +CFATTACH_DECL3_NEW(mmio_cmdline,
> +     sizeof(struct virtio_mmio_cmdline_softc),
> +     virtio_mmio_cmdline_match, virtio_mmio_cmdline_attach,
> +     virtio_mmio_cmdline_detach, NULL,
> +     virtio_mmio_cmdline_rescan, (void *)voidop, DVF_DETACH_SHUTDOWN);

Nit: KNF continuation line is four spaces, not one tab.  Same in
various other places.

Use NULL, not (void *)voidop.

Is DVF_DETACH_SHUTDOWN necessary here?  Does this driver have to run
its detach routine in order to safely, e.g., force buffered writes to
persistent storage?

> +     error = bus_space_map(
> +                     msc->sc_iot, margs->baseaddr,
> +                     margs->sz, 0, &msc->sc_ioh
> +             );
> +     if (error) {
> +             aprint_error_dev(self,
> +                     "couldn't map %#" PRIx64 ": %d",
> +                     (uint64_t)margs->baseaddr, error
> +             );
> +             return error;
> +     }

Same here about continuation lines, plus no line break before closing
parentheses, and no need to cast to uint64_t because margs->baseaddr
is already uint64_t:

        error = bus_space_map(msc->sc_iot, margs->baseaddr, margs->sz, 0,
            &msc->sc_ioh);
        if (error) {
                aprint_error_dev(self, "couldn't map %#"PRIx64": %d",
                    margs->baseaddr, error);
                return error;
        }

Reply via email to