summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/pci_impl.h
diff options
context:
space:
mode:
authorgs150176 <none@none>2008-02-27 17:24:34 -0800
committergs150176 <none@none>2008-02-27 17:24:34 -0800
commit05f867c35e2c26a9bbb8c217695d6a71dfc44f35 (patch)
tree3ea3735819402fd5dee7ecde97a3220137446547 /usr/src/uts/common/sys/pci_impl.h
parent98157a7002f4f2cf7978f3084ca5577f0a1d72b2 (diff)
downloadillumos-gate-05f867c35e2c26a9bbb8c217695d6a71dfc44f35.tar.gz
6324898 pci resource allocator needs to be aware of subtractive bridges
6419924 pci_autoconfig: pci_autoconfig could reprogram PCI_PCI bridges when BIOS doesn't get it right 6657273 fix memlist_find() in pci_memlist.c
Diffstat (limited to 'usr/src/uts/common/sys/pci_impl.h')
-rw-r--r--usr/src/uts/common/sys/pci_impl.h25
1 files changed, 17 insertions, 8 deletions
diff --git a/usr/src/uts/common/sys/pci_impl.h b/usr/src/uts/common/sys/pci_impl.h
index 5dbf97ba30..6df187daf9 100644
--- a/usr/src/uts/common/sys/pci_impl.h
+++ b/usr/src/uts/common/sys/pci_impl.h
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -92,18 +92,23 @@ typedef struct pci_acc_cfblk {
} pci_acc_cfblk_t;
struct pci_bus_resource {
- struct memlist *io_ports;
- struct memlist *mem_space;
- struct memlist *pmem_space;
+ struct memlist *io_ports; /* available free io res */
+ struct memlist *io_ports_used; /* used io res */
+ struct memlist *mem_space; /* available free mem res */
+ struct memlist *mem_space_used; /* used mem res */
+ struct memlist *pmem_space; /* available free prefetchable mem res */
+ struct memlist *pmem_space_used; /* used prefetchable mem res */
+ struct memlist *bus_space; /* available free bus res */
+ /* bus_space_used not needed; can read from regs */
dev_info_t *dip; /* devinfo node */
void *privdata; /* private data for configuration */
uchar_t par_bus; /* parent bus number */
uchar_t sub_bus; /* highest bus number beyond this bridge */
uchar_t root_addr; /* legacy peer bus address assignment */
- uchar_t padding1;
-#ifdef _LP64
- uint32_t padding2;
-#endif
+ uchar_t num_cbb; /* # of CardBus Bridges on the bus */
+ boolean_t io_reprogram; /* need io reprog on this bus */
+ boolean_t mem_reprogram; /* need mem reprog on this bus */
+ boolean_t subtractive; /* subtractive PPB */
};
extern struct pci_bus_resource *pci_bus_res;
@@ -113,10 +118,14 @@ extern struct pci_bus_resource *pci_bus_res;
*/
extern struct memlist *memlist_alloc(void);
extern void memlist_free(struct memlist *);
+extern void memlist_free_all(struct memlist **);
extern void memlist_insert(struct memlist **, uint64_t, uint64_t);
extern int memlist_remove(struct memlist **, uint64_t, uint64_t);
extern uint64_t memlist_find(struct memlist **, uint64_t, int);
+extern uint64_t memlist_find_with_startaddr(struct memlist **, uint64_t,
+ uint64_t, int);
extern void memlist_dump(struct memlist *);
+extern void memlist_merge(struct memlist **, struct memlist **);
extern struct memlist *memlist_dup(struct memlist *);
extern int memlist_count(struct memlist *);