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:
parent
b1d1fa04b9
commit
5ea540e75d
1 changed files with 1 additions and 1 deletions
|
@ -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]);
|
||||
|
|
Loading…
Reference in a new issue