- Check that the interrupt line is not 255
- Check that the interrupt pin is not 0
- Fixes a failed assertion that Caemyr experienced with an ATI Rage graphics card

svn path=/trunk/; revision=49127
This commit is contained in:
Cameron Gutman 2010-10-12 20:02:15 +00:00
parent 1bcf80bc88
commit eb1a973d69
2 changed files with 9 additions and 3 deletions

View file

@ -753,7 +753,9 @@ HalpAssignPCISlotResources(IN PBUS_HANDLER BusHandler,
}
/* Interrupt resource */
if (0 != PciConfig.u.type0.InterruptLine)
if (0 != PciConfig.u.type0.InterruptPin &&
0 != PciConfig.u.type0.InterruptLine &&
0xFF != PciConfig.u.type0.InterruptLine)
ResourceCount++;
/* Allocate output buffer and initialize */
@ -806,7 +808,9 @@ HalpAssignPCISlotResources(IN PBUS_HANDLER BusHandler,
}
}
if (0 != PciConfig.u.type0.InterruptLine)
if (0 != PciConfig.u.type0.InterruptPin &&
0 != PciConfig.u.type0.InterruptLine &&
0xFF != PciConfig.u.type0.InterruptLine)
{
Descriptor->Type = CmResourceTypeInterrupt;
Descriptor->ShareDisposition = CmResourceShareShared; /* FIXME Just a guess */

View file

@ -785,7 +785,9 @@ HalpDebugPciDumpBus(IN ULONG i,
if ((PciData->Status & PCI_STATUS_DEVSEL) == 0x200) DbgPrint(" medium devsel,");
if ((PciData->Status & PCI_STATUS_DEVSEL) == 0x400) DbgPrint(" fast devsel,");
DbgPrint(" latency %d", PciData->LatencyTimer);
if (PciData->u.type0.InterruptLine) DbgPrint(", IRQ %02d", PciData->u.type0.InterruptLine);
if (PciData->u.type0.InterruptPin != 0 &&
PciData->u.type0.InterruptLine != 0 &&
PciData->u.type0.InterruptLine != 0xFF) DbgPrint(", IRQ %02d", PciData->u.type0.InterruptLine);
DbgPrint("\n");
/* Scan addresses */