sdiahci: enable pci busmaster before ahciconfigdrive() (fix qemu crash)

enable pci busmaster before set the fis-receive-enable
bit in the port command register.

not doing so triggers a crash in qemu like:

address_space_unmap: Assertion `mr != NULL' failed.

as qemu tries to process the dma command list as soon
as we set that flag and busmaster dma needs to be enabled
at this point.
This commit is contained in:
cinap_lenrek 2020-12-12 18:00:41 +01:00
parent b1d1fa04b9
commit 5ea540e75d

View file

@ -1553,7 +1553,6 @@ iaenable(SDev *s)
}
if(c->ndrive == 0)
panic("iaenable: zero s->ctlr->ndrive");
pcisetbme(c->pci);
snprint(name, sizeof name, "%s (%s)", s->name, s->ifc->name);
intrenable(c->pci->intl, iainterrupt, c, c->pci->tbdf, name);
/* supposed to squelch leftover interrupts here. */
@ -2228,6 +2227,7 @@ iapnp(void)
c->drive[d->driveno] = d;
iadrive[niadrive + d->driveno] = d;
}
pcisetbme(c->pci);
for(i = 0; i < n; i++){
c->drive[i]->mode = DMautoneg;
configdrive(c->drive[i]);