sdvirtio: provide enable() and disable() functions so it can be switched off
This commit is contained in:
parent
e0c221eea6
commit
c404fd9d6f
|
@ -563,11 +563,29 @@ vioverify(SDunit *u)
|
|||
|
||||
SDifc sdvirtioifc;
|
||||
|
||||
static void
|
||||
vdevenable(Vdev *vd)
|
||||
static int
|
||||
vioenable(SDev *sd)
|
||||
{
|
||||
intrenable(vd->pci->intl, viointerrupt, vd, vd->pci->tbdf, "virtio");
|
||||
char name[32];
|
||||
Vdev *vd;
|
||||
|
||||
vd = sd->ctlr;
|
||||
snprint(name, sizeof(name), "%s (%s)", sd->name, sd->ifc->name);
|
||||
intrenable(vd->pci->intl, viointerrupt, vd, vd->pci->tbdf, name);
|
||||
outb(vd->port+Status, inb(vd->port+Status) | DriverOk);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
viodisable(SDev *sd)
|
||||
{
|
||||
char name[32];
|
||||
Vdev *vd;
|
||||
|
||||
vd = sd->ctlr;
|
||||
snprint(name, sizeof(name), "%s (%s)", sd->name, sd->ifc->name);
|
||||
intrdisable(vd->pci->intl, viointerrupt, vd, vd->pci->tbdf, name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static SDev*
|
||||
|
@ -584,8 +602,6 @@ viopnp(void)
|
|||
if(vd->nqueue != 1)
|
||||
continue;
|
||||
|
||||
vdevenable(vd);
|
||||
|
||||
if((s = malloc(sizeof(*s))) == nil)
|
||||
break;
|
||||
s->ctlr = vd;
|
||||
|
@ -630,8 +646,6 @@ viopnp(void)
|
|||
continue;
|
||||
}
|
||||
vd->cfg = cfg;
|
||||
|
||||
vdevenable(vd);
|
||||
|
||||
if((s = malloc(sizeof(*s))) == nil)
|
||||
break;
|
||||
|
@ -654,8 +668,8 @@ SDifc sdvirtioifc = {
|
|||
|
||||
viopnp, /* pnp */
|
||||
nil, /* legacy */
|
||||
nil, /* enable */
|
||||
nil, /* disable */
|
||||
vioenable, /* enable */
|
||||
viodisable, /* disable */
|
||||
|
||||
vioverify, /* verify */
|
||||
vioonline, /* online */
|
||||
|
|
Loading…
Reference in a new issue