|
Lines 540-557
Link Here
|
| 540 |
pPCI = xf86GetPciHostConfigFromTag(Tag); |
540 |
pPCI = xf86GetPciHostConfigFromTag(Tag); |
| 541 |
|
541 |
|
| 542 |
if (pPCI && (result = PCI_DOM_FROM_BUS(pPCI->busnum))) |
542 |
if (pPCI && (result = PCI_DOM_FROM_BUS(pPCI->busnum))) |
| 543 |
return result + 1; |
543 |
return result; |
| 544 |
|
544 |
|
| 545 |
if (!pPCI || pPCI->fakeDevice) |
545 |
if (!pPCI || pPCI->fakeDevice) |
| 546 |
return 1; /* Domain 0 is reserved */ |
546 |
return 0; |
| 547 |
|
547 |
|
| 548 |
if ((fd = linuxPciOpenFile(pPCI ? pPCI->tag : 0,FALSE)) < 0) |
548 |
if ((fd = linuxPciOpenFile(pPCI ? pPCI->tag : 0,FALSE)) < 0) |
| 549 |
return 0; |
549 |
return -1; |
| 550 |
|
550 |
|
| 551 |
if ((result = ioctl(fd, PCIIOC_CONTROLLER, 0)) < 0) |
551 |
if ((result = ioctl(fd, PCIIOC_CONTROLLER, 0)) < 0) |
| 552 |
return 0; |
552 |
return -1; |
| 553 |
|
553 |
|
| 554 |
return result + 1; /* Domain 0 is reserved */ |
554 |
return result; |
| 555 |
} |
555 |
} |
| 556 |
|
556 |
|
| 557 |
static pointer |
557 |
static pointer |
|
Lines 623-629
Link Here
|
| 623 |
return NULL; |
623 |
return NULL; |
| 624 |
} |
624 |
} |
| 625 |
|
625 |
|
| 626 |
#define MAX_DOMAINS 257 |
626 |
#define MAX_DOMAINS 256 |
| 627 |
static pointer DomainMmappedIO[MAX_DOMAINS]; |
627 |
static pointer DomainMmappedIO[MAX_DOMAINS]; |
| 628 |
static pointer DomainMmappedMem[MAX_DOMAINS]; |
628 |
static pointer DomainMmappedMem[MAX_DOMAINS]; |
| 629 |
|
629 |
|
|
Lines 645-655
Link Here
|
| 645 |
domain = xf86GetPciDomain(Tag); |
645 |
domain = xf86GetPciDomain(Tag); |
| 646 |
bus = PCI_BUS_NO_DOMAIN(PCI_BUS_FROM_TAG(Tag)); |
646 |
bus = PCI_BUS_NO_DOMAIN(PCI_BUS_FROM_TAG(Tag)); |
| 647 |
|
647 |
|
| 648 |
/* Domain 0 is reserved -- see xf86GetPciDomain() */ |
648 |
if ((domain < 0) || (domain >= MAX_DOMAINS)) |
| 649 |
if ((domain <= 0) || (domain >= MAX_DOMAINS)) |
|
|
| 650 |
FatalError("linuxOpenLegacy(): domain out of range\n"); |
649 |
FatalError("linuxOpenLegacy(): domain out of range\n"); |
| 651 |
|
650 |
|
| 652 |
sprintf(path, PREFIX, domain - 1, bus, name); |
651 |
sprintf(path, PREFIX, domain, bus, name); |
| 653 |
fd = open(path, O_RDWR); |
652 |
fd = open(path, O_RDWR); |
| 654 |
if (fd >= 0) { |
653 |
if (fd >= 0) { |
| 655 |
xfree(path); |
654 |
xfree(path); |
|
Lines 734-740
Link Here
|
| 734 |
int domain = xf86GetPciDomain(Tag); |
733 |
int domain = xf86GetPciDomain(Tag); |
| 735 |
int fd; |
734 |
int fd; |
| 736 |
|
735 |
|
| 737 |
if ((domain <= 0) || (domain >= MAX_DOMAINS)) |
736 |
if ((domain < 0) || (domain >= MAX_DOMAINS)) |
| 738 |
FatalError("xf86MapDomainIO(): domain out of range\n"); |
737 |
FatalError("xf86MapDomainIO(): domain out of range\n"); |
| 739 |
|
738 |
|
| 740 |
if (DomainMmappedIO[domain]) |
739 |
if (DomainMmappedIO[domain]) |
|
Lines 880-886
Link Here
|
| 880 |
RANGE_TYPE(ResExcIoBlock, domain)); |
879 |
RANGE_TYPE(ResExcIoBlock, domain)); |
| 881 |
pRes = xf86AddResToList(pRes, &range, -1); |
880 |
pRes = xf86AddResToList(pRes, &range, -1); |
| 882 |
|
881 |
|
| 883 |
if (domain <= 0) |
882 |
if (domain < 0) |
| 884 |
break; |
883 |
break; |
| 885 |
} |
884 |
} |
| 886 |
} |
885 |
} |
|
Lines 932-938
Link Here
|
| 932 |
RANGE_TYPE(ResExcIoBlock, domain)); |
931 |
RANGE_TYPE(ResExcIoBlock, domain)); |
| 933 |
pRes = xf86AddResToList(pRes, &range, -1); |
932 |
pRes = xf86AddResToList(pRes, &range, -1); |
| 934 |
|
933 |
|
| 935 |
if (domain <= 0) |
934 |
if (domain < 0) |
| 936 |
break; |
935 |
break; |
| 937 |
} |
936 |
} |
| 938 |
} |
937 |
} |