diff options
author | Dave Airlie <airlied@redhat.com> | 2012-08-20 13:49:19 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-08-20 13:49:19 +1000 |
commit | bc04e9ed659be51a3c712f34a038bd60f639f9c5 (patch) | |
tree | e051c1b7782cf27fe18ec697a968dd38edb96ba5 /src/cir_driver.c | |
parent | 129076c2a9c20ab515736bb7141b4f334699e21b (diff) |
cirrus: fix falling back after kernel check
if we find a kernel driver the code leave the pci slot claimed which
stops us falling back. unclaim the pci slot.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'src/cir_driver.c')
-rw-r--r-- | src/cir_driver.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/cir_driver.c b/src/cir_driver.c index 5468b6b..c8d5aae 100644 --- a/src/cir_driver.c +++ b/src/cir_driver.c @@ -237,9 +237,10 @@ CIRProbe(DriverPtr drv, int flags) CIRChipsets, CIRPciChipsets, devSections, numDevSections, drv, &usedChips); /* Free it since we don't need that list after this */ - free(devSections); - if (numUsed <= 0) + if (numUsed <= 0) { + free(devSections); return FALSE; + } if (flags & PROBE_DETECT) foundScreen = TRUE; else for (i = 0; i < numUsed; i++) { @@ -257,6 +258,8 @@ CIRProbe(DriverPtr drv, int flags) pPci->device_id, pPci->bus, pPci->domain, pPci->dev, pPci->func); xf86DrvMsg(0, X_ERROR, "cirrus: This driver cannot operate until it has been unloaded.\n"); + xf86UnclaimPciSlot(pPci, devSections[0]); + free(devSections); return FALSE; } #endif @@ -290,6 +293,7 @@ CIRProbe(DriverPtr drv, int flags) pScrn->Probe = NULL; } } + free(devSections); free(usedChips); return foundScreen; |