diff options
| author | Andy Grover <agrover@groveronline.com> | 2002-09-03 23:29:50 -0700 |
|---|---|---|
| committer | Andy Grover <agrover@groveronline.com> | 2002-09-03 23:29:50 -0700 |
| commit | a2fa7607d9d663168703c2a15db48bea260939f5 (patch) | |
| tree | 6215035e3765fe67822de77d668b7f762394b5a8 /include/linux | |
| parent | 0223e6f5a28e8088cf613068cddb2ba58005dffb (diff) | |
| parent | e42e97d63b46995f3f0d073cae433e4eb87ff5de (diff) | |
Merge groveronline.com:/root/bk/linux-2.5
into groveronline.com:/root/bk/linux-acpi
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/bootmem.h | 6 | ||||
| -rw-r--r-- | include/linux/compiler.h | 6 | ||||
| -rw-r--r-- | include/linux/device.h | 6 | ||||
| -rw-r--r-- | include/linux/fs.h | 4 | ||||
| -rw-r--r-- | include/linux/list.h | 49 | ||||
| -rw-r--r-- | include/linux/mm.h | 8 | ||||
| -rw-r--r-- | include/linux/mmzone.h | 5 | ||||
| -rw-r--r-- | include/linux/page-flags.h | 30 | ||||
| -rw-r--r-- | include/linux/pci_ids.h | 32 | ||||
| -rw-r--r-- | include/linux/rmap-locking.h | 33 | ||||
| -rw-r--r-- | include/linux/sched.h | 2 |
11 files changed, 106 insertions, 75 deletions
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h index 3bd68c042514..782041f43326 100644 --- a/include/linux/bootmem.h +++ b/include/linux/bootmem.h @@ -36,9 +36,10 @@ typedef struct bootmem_data { extern unsigned long __init bootmem_bootmap_pages (unsigned long); extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend); -extern void __init reserve_bootmem (unsigned long addr, unsigned long size); extern void __init free_bootmem (unsigned long addr, unsigned long size); extern void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal); +#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE +extern void __init reserve_bootmem (unsigned long addr, unsigned long size); #define alloc_bootmem(x) \ __alloc_bootmem((x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) #define alloc_bootmem_low(x) \ @@ -47,6 +48,7 @@ extern void * __init __alloc_bootmem (unsigned long size, unsigned long align, u __alloc_bootmem((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) #define alloc_bootmem_low_pages(x) \ __alloc_bootmem((x), PAGE_SIZE, 0) +#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */ extern unsigned long __init free_all_bootmem (void); extern unsigned long __init init_bootmem_node (pg_data_t *pgdat, unsigned long freepfn, unsigned long startpfn, unsigned long endpfn); @@ -54,11 +56,13 @@ extern void __init reserve_bootmem_node (pg_data_t *pgdat, unsigned long physadd extern void __init free_bootmem_node (pg_data_t *pgdat, unsigned long addr, unsigned long size); extern unsigned long __init free_all_bootmem_node (pg_data_t *pgdat); extern void * __init __alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal); +#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE #define alloc_bootmem_node(pgdat, x) \ __alloc_bootmem_node((pgdat), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) #define alloc_bootmem_pages_node(pgdat, x) \ __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) #define alloc_bootmem_low_pages_node(pgdat, x) \ __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, 0) +#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */ #endif /* _LINUX_BOOTMEM_H */ diff --git a/include/linux/compiler.h b/include/linux/compiler.h index eea3d3636e2a..6b19413b47a6 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -16,7 +16,7 @@ /* This macro obfuscates arithmetic on a variable address so that gcc shouldn't recognize the original var, and make assumptions about it */ #define RELOC_HIDE(ptr, off) \ - ({ __typeof__(ptr) __ptr; \ - __asm__ ("" : "=g"(__ptr) : "0"((void *)(ptr) + (off))); \ - __ptr; }) + ({ unsigned long __ptr; \ + __asm__ ("" : "=g"(__ptr) : "0"(ptr)); \ + (typeof(ptr)) (__ptr + (off)); }) #endif /* __LINUX_COMPILER_H */ diff --git a/include/linux/device.h b/include/linux/device.h index 4dcadb058a00..9b310071cb41 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -57,9 +57,9 @@ struct bus_type { rwlock_t lock; atomic_t refcount; - list_t node; - list_t devices; - list_t drivers; + struct list_head node; + struct list_head devices; + struct list_head drivers; struct driver_dir_entry dir; struct driver_dir_entry device_dir; diff --git a/include/linux/fs.h b/include/linux/fs.h index befc2bbb5f3c..66fa638d2ff2 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -322,8 +322,8 @@ struct address_space { struct list_head io_pages; /* being prepared for I/O */ unsigned long nrpages; /* number of total pages */ struct address_space_operations *a_ops; /* methods */ - list_t i_mmap; /* list of private mappings */ - list_t i_mmap_shared; /* list of private mappings */ + struct list_head i_mmap; /* list of private mappings */ + struct list_head i_mmap_shared; /* list of private mappings */ spinlock_t i_shared_lock; /* and spinlock protecting it */ unsigned long dirtied_when; /* jiffies of first page dirtying */ int gfp_mask; /* how to allocate the pages */ diff --git a/include/linux/list.h b/include/linux/list.h index 913c93c44286..1e311d042cab 100644 --- a/include/linux/list.h +++ b/include/linux/list.h @@ -19,12 +19,10 @@ struct list_head { struct list_head *next, *prev; }; -typedef struct list_head list_t; - #define LIST_HEAD_INIT(name) { &(name), &(name) } #define LIST_HEAD(name) \ - list_t name = LIST_HEAD_INIT(name) + struct list_head name = LIST_HEAD_INIT(name) #define INIT_LIST_HEAD(ptr) do { \ (ptr)->next = (ptr); (ptr)->prev = (ptr); \ @@ -36,7 +34,9 @@ typedef struct list_head list_t; * This is only for internal list manipulation where we know * the prev/next entries already! */ -static inline void __list_add(list_t *new, list_t *prev, list_t *next) +static inline void __list_add(struct list_head *new, + struct list_head *prev, + struct list_head *next) { next->prev = new; new->next = next; @@ -52,7 +52,7 @@ static inline void __list_add(list_t *new, list_t *prev, list_t *next) * Insert a new entry after the specified head. * This is good for implementing stacks. */ -static inline void list_add(list_t *new, list_t *head) +static inline void list_add(struct list_head *new, struct list_head *head) { __list_add(new, head, head->next); } @@ -65,7 +65,7 @@ static inline void list_add(list_t *new, list_t *head) * Insert a new entry before the specified head. * This is useful for implementing queues. */ -static inline void list_add_tail(list_t *new, list_t *head) +static inline void list_add_tail(struct list_head *new, struct list_head *head) { __list_add(new, head->prev, head); } @@ -77,7 +77,7 @@ static inline void list_add_tail(list_t *new, list_t *head) * This is only for internal list manipulation where we know * the prev/next entries already! */ -static inline void __list_del(list_t * prev, list_t * next) +static inline void __list_del(struct list_head * prev, struct list_head * next) { next->prev = prev; prev->next = next; @@ -88,7 +88,7 @@ static inline void __list_del(list_t * prev, list_t * next) * @entry: the element to delete from the list. * Note: list_empty on entry does not return true after this, the entry is in an undefined state. */ -static inline void list_del(list_t *entry) +static inline void list_del(struct list_head *entry) { __list_del(entry->prev, entry->next); entry->next = (void *) 0; @@ -99,7 +99,7 @@ static inline void list_del(list_t *entry) * list_del_init - deletes entry from list and reinitialize it. * @entry: the element to delete from the list. */ -static inline void list_del_init(list_t *entry) +static inline void list_del_init(struct list_head *entry) { __list_del(entry->prev, entry->next); INIT_LIST_HEAD(entry); @@ -110,7 +110,7 @@ static inline void list_del_init(list_t *entry) * @list: the entry to move * @head: the head that will precede our entry */ -static inline void list_move(list_t *list, list_t *head) +static inline void list_move(struct list_head *list, struct list_head *head) { __list_del(list->prev, list->next); list_add(list, head); @@ -121,7 +121,8 @@ static inline void list_move(list_t *list, list_t *head) * @list: the entry to move * @head: the head that will follow our entry */ -static inline void list_move_tail(list_t *list, list_t *head) +static inline void list_move_tail(struct list_head *list, + struct list_head *head) { __list_del(list->prev, list->next); list_add_tail(list, head); @@ -131,16 +132,17 @@ static inline void list_move_tail(list_t *list, list_t *head) * list_empty - tests whether a list is empty * @head: the list to test. */ -static inline int list_empty(list_t *head) +static inline int list_empty(struct list_head *head) { return head->next == head; } -static inline void __list_splice(list_t *list, list_t *head) +static inline void __list_splice(struct list_head *list, + struct list_head *head) { - list_t *first = list->next; - list_t *last = list->prev; - list_t *at = head->next; + struct list_head *first = list->next; + struct list_head *last = list->prev; + struct list_head *at = head->next; first->prev = head; head->next = first; @@ -154,7 +156,7 @@ static inline void __list_splice(list_t *list, list_t *head) * @list: the new list to add. * @head: the place to add it in the first list. */ -static inline void list_splice(list_t *list, list_t *head) +static inline void list_splice(struct list_head *list, struct list_head *head) { if (!list_empty(list)) __list_splice(list, head); @@ -167,7 +169,8 @@ static inline void list_splice(list_t *list, list_t *head) * * The list at @list is reinitialised */ -static inline void list_splice_init(list_t *list, list_t *head) +static inline void list_splice_init(struct list_head *list, + struct list_head *head) { if (!list_empty(list)) { __list_splice(list, head); @@ -177,7 +180,7 @@ static inline void list_splice_init(list_t *list, list_t *head) /** * list_entry - get the struct for this entry - * @ptr: the &list_t pointer. + * @ptr: the &struct list_head pointer. * @type: the type of the struct this is embedded in. * @member: the name of the list_struct within the struct. */ @@ -186,7 +189,7 @@ static inline void list_splice_init(list_t *list, list_t *head) /** * list_for_each - iterate over a list - * @pos: the &list_t to use as a loop counter. + * @pos: the &struct list_head to use as a loop counter. * @head: the head for your list. */ #define list_for_each(pos, head) \ @@ -194,7 +197,7 @@ static inline void list_splice_init(list_t *list, list_t *head) pos = pos->next, prefetch(pos->next)) /** * list_for_each_prev - iterate over a list backwards - * @pos: the &list_t to use as a loop counter. + * @pos: the &struct list_head to use as a loop counter. * @head: the head for your list. */ #define list_for_each_prev(pos, head) \ @@ -203,8 +206,8 @@ static inline void list_splice_init(list_t *list, list_t *head) /** * list_for_each_safe - iterate over a list safe against removal of list entry - * @pos: the &list_t to use as a loop counter. - * @n: another &list_t to use as temporary storage + * @pos: the &struct list_head to use as a loop counter. + * @n: another &struct list_head to use as temporary storage * @head: the head for your list. */ #define list_for_each_safe(pos, n, head) \ diff --git a/include/linux/mm.h b/include/linux/mm.h index cdfaea4e3307..5e01743a0bc6 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -61,7 +61,7 @@ struct vm_area_struct { * one of the address_space->i_mmap{,shared} lists, * for shm areas, the list of attaches, otherwise unused. */ - list_t shared; + struct list_head shared; /* Function pointers to deal with this struct. */ struct vm_operations_struct * vm_ops; @@ -316,8 +316,8 @@ static inline void set_page_zone(struct page *page, unsigned long zone_num) #else /* CONFIG_HIGHMEM || WANT_PAGE_VIRTUAL */ #define page_address(page) \ - __va( (((page) - page_zone(page)->zone_mem_map) << PAGE_SHIFT) \ - + page_zone(page)->zone_start_paddr) + __va( ( ((page) - page_zone(page)->zone_mem_map) \ + + page_zone(page)->zone_start_pfn) << PAGE_SHIFT) #endif /* CONFIG_HIGHMEM || WANT_PAGE_VIRTUAL */ @@ -398,7 +398,7 @@ static inline pmd_t *pmd_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a extern void free_area_init(unsigned long * zones_size); extern void free_area_init_node(int nid, pg_data_t *pgdat, struct page *pmap, - unsigned long * zones_size, unsigned long zone_start_paddr, + unsigned long * zones_size, unsigned long zone_start_pfn, unsigned long *zholes_size); extern void mem_init(void); extern void show_mem(void); diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index f30bd4f44863..e5b6bc1111b8 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -110,7 +110,8 @@ struct zone { */ struct pglist_data *zone_pgdat; struct page *zone_mem_map; - unsigned long zone_start_paddr; + /* zone_start_pfn == zone_start_paddr >> PAGE_SHIFT */ + unsigned long zone_start_pfn; unsigned long zone_start_mapnr; /* @@ -161,7 +162,7 @@ typedef struct pglist_data { struct page *node_mem_map; unsigned long *valid_addr_bitmap; struct bootmem_data *bdata; - unsigned long node_start_paddr; + unsigned long node_start_pfn; unsigned long node_start_mapnr; unsigned long node_size; int node_id; diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index 5a49020e728b..2b2eb67ae7a8 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h @@ -229,36 +229,6 @@ extern void get_page_state(struct page_state *ret); #define TestClearPageDirect(page) test_and_clear_bit(PG_direct, &(page)->flags) /* - * inlines for acquisition and release of PG_chainlock - */ -static inline void pte_chain_lock(struct page *page) -{ - /* - * Assuming the lock is uncontended, this never enters - * the body of the outer loop. If it is contended, then - * within the inner loop a non-atomic test is used to - * busywait with less bus contention for a good time to - * attempt to acquire the lock bit. - */ - preempt_disable(); -#ifdef CONFIG_SMP - while (test_and_set_bit(PG_chainlock, &page->flags)) { - while (test_bit(PG_chainlock, &page->flags)) - cpu_relax(); - } -#endif -} - -static inline void pte_chain_unlock(struct page *page) -{ -#ifdef CONFIG_SMP - smp_mb__before_clear_bit(); - clear_bit(PG_chainlock, &page->flags); -#endif - preempt_enable(); -} - -/* * The PageSwapCache predicate doesn't use a PG_flag at this time, * but it may again do so one day. */ diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 3fc73ad5c299..a510a4013648 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -820,11 +820,13 @@ #define PCI_DEVICE_ID_AL_M1531 0x1531 #define PCI_DEVICE_ID_AL_M1533 0x1533 #define PCI_DEVICE_ID_AL_M1541 0x1541 -#define PCI_DEVICE_ID_AL_M1621 0x1621 -#define PCI_DEVICE_ID_AL_M1631 0x1631 -#define PCI_DEVICE_ID_AL_M1641 0x1641 -#define PCI_DEVICE_ID_AL_M1647 0x1647 -#define PCI_DEVICE_ID_AL_M1651 0x1651 +#define PCI_DEVICE_ID_AL_M1621 0x1621 +#define PCI_DEVICE_ID_AL_M1631 0x1631 +#define PCI_DEVICE_ID_AL_M1632 0x1632 +#define PCI_DEVICE_ID_AL_M1641 0x1641 +#define PCI_DEVICE_ID_AL_M1644 0x1644 +#define PCI_DEVICE_ID_AL_M1647 0x1647 +#define PCI_DEVICE_ID_AL_M1651 0x1651 #define PCI_DEVICE_ID_AL_M1543 0x1543 #define PCI_DEVICE_ID_AL_M3307 0x3307 #define PCI_DEVICE_ID_AL_M4803 0x5215 @@ -961,7 +963,7 @@ #define PCI_DEVICE_ID_VIA_82C597_0 0x0597 #define PCI_DEVICE_ID_VIA_82C598_0 0x0598 #define PCI_DEVICE_ID_VIA_8601_0 0x0601 -#define PCI_DEVICE_ID_VIA_8605_0 0x0605 +#define PCI_DEVICE_ID_VIA_82C694X_0 0x0605 #define PCI_DEVICE_ID_VIA_82C680 0x0680 #define PCI_DEVICE_ID_VIA_82C686 0x0686 #define PCI_DEVICE_ID_VIA_82C691 0x0691 @@ -1637,6 +1639,9 @@ #define PCI_DEVICE_ID_INTEL_I960 0x0960 #define PCI_DEVICE_ID_INTEL_82562ET 0x1031 #define PCI_DEVICE_ID_INTEL_82801CAM 0x1038 +#define PCI_DEVICE_ID_INTEL_82815_MC 0x1130 +#define PCI_DEVICE_ID_INTEL_82815_AB 0x1131 +#define PCI_DEVICE_ID_INTEL_82815_CGC 0x1132 #define PCI_DEVICE_ID_INTEL_82559ER 0x1209 #define PCI_DEVICE_ID_INTEL_82092AA_0 0x1221 #define PCI_DEVICE_ID_INTEL_82092AA_1 0x1222 @@ -1653,6 +1658,8 @@ #define PCI_DEVICE_ID_INTEL_82380FB 0x124b #define PCI_DEVICE_ID_INTEL_82439 0x1250 #define PCI_DEVICE_ID_INTEL_80960_RP 0x1960 +#define PCI_DEVICE_ID_INTEL_82840_HB 0x1a21 +#define PCI_DEVICE_ID_INTEL_82845_HB 0x1a30 #define PCI_DEVICE_ID_INTEL_82801AA_0 0x2410 #define PCI_DEVICE_ID_INTEL_82801AA_1 0x2411 #define PCI_DEVICE_ID_INTEL_82801AA_2 0x2412 @@ -1693,6 +1700,14 @@ #define PCI_DEVICE_ID_INTEL_82801CA_12 0x248c #define PCI_DEVICE_ID_INTEL_82801DB_9 0x24cb #define PCI_DEVICE_ID_INTEL_82801DB_11 PCI_DEVICE_ID_INTEL_82801DB_9 +#define PCI_DEVICE_ID_INTEL_82820_HB 0x2500 +#define PCI_DEVICE_ID_INTEL_82820_UP_HB 0x2501 +#define PCI_DEVICE_ID_INTEL_82850_HB 0x2530 +#define PCI_DEVICE_ID_INTEL_82860_HB 0x2531 +#define PCI_DEVICE_ID_INTEL_82845G_HB 0x2560 +#define PCI_DEVICE_ID_INTEL_82845G_IG 0x2562 +#define PCI_DEVICE_ID_INTEL_82830_HB 0x3575 +#define PCI_DEVICE_ID_INTEL_82830_CGC 0x3577 #define PCI_DEVICE_ID_INTEL_80310 0x530d #define PCI_DEVICE_ID_INTEL_82371SB_0 0x7000 #define PCI_DEVICE_ID_INTEL_82371SB_1 0x7010 @@ -1707,6 +1722,8 @@ #define PCI_DEVICE_ID_INTEL_82810_IG1 0x7121 #define PCI_DEVICE_ID_INTEL_82810_MC3 0x7122 #define PCI_DEVICE_ID_INTEL_82810_IG3 0x7123 +#define PCI_DEVICE_ID_INTEL_82810E_MC 0x7124 +#define PCI_DEVICE_ID_INTEL_82810E_IG 0x7125 #define PCI_DEVICE_ID_INTEL_82443LX_0 0x7180 #define PCI_DEVICE_ID_INTEL_82443LX_1 0x7181 #define PCI_DEVICE_ID_INTEL_82443BX_0 0x7190 @@ -1716,6 +1733,8 @@ #define PCI_DEVICE_ID_INTEL_82443MX_1 0x7199 #define PCI_DEVICE_ID_INTEL_82443MX_2 0x719a #define PCI_DEVICE_ID_INTEL_82443MX_3 0x719b +#define PCI_DEVICE_ID_INTEL_82443GX_0 0x71a0 +#define PCI_DEVICE_ID_INTEL_82443GX_1 0x71a1 #define PCI_DEVICE_ID_INTEL_82372FB_0 0x7600 #define PCI_DEVICE_ID_INTEL_82372FB_1 0x7601 #define PCI_DEVICE_ID_INTEL_82372FB_2 0x7602 @@ -1723,6 +1742,7 @@ #define PCI_DEVICE_ID_INTEL_82454GX 0x84c4 #define PCI_DEVICE_ID_INTEL_82450GX 0x84c5 #define PCI_DEVICE_ID_INTEL_82451NX 0x84ca +#define PCI_DEVICE_ID_INTEL_84460GX 0x84ea #define PCI_VENDOR_ID_COMPUTONE 0x8e0e #define PCI_DEVICE_ID_COMPUTONE_IP2EX 0x0291 diff --git a/include/linux/rmap-locking.h b/include/linux/rmap-locking.h new file mode 100644 index 000000000000..302a58f54ca3 --- /dev/null +++ b/include/linux/rmap-locking.h @@ -0,0 +1,33 @@ +/* + * include/linux/rmap-locking.h + * + * Locking primitives for exclusive access to a page's reverse-mapping + * pte chain. + */ + +static inline void pte_chain_lock(struct page *page) +{ + /* + * Assuming the lock is uncontended, this never enters + * the body of the outer loop. If it is contended, then + * within the inner loop a non-atomic test is used to + * busywait with less bus contention for a good time to + * attempt to acquire the lock bit. + */ + preempt_disable(); +#ifdef CONFIG_SMP + while (test_and_set_bit(PG_chainlock, &page->flags)) { + while (test_bit(PG_chainlock, &page->flags)) + cpu_relax(); + } +#endif +} + +static inline void pte_chain_unlock(struct page *page) +{ +#ifdef CONFIG_SMP + smp_mb__before_clear_bit(); + clear_bit(PG_chainlock, &page->flags); +#endif + preempt_enable(); +} diff --git a/include/linux/sched.h b/include/linux/sched.h index 77db4acdfdcd..c5c828d52897 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -264,7 +264,7 @@ struct task_struct { int lock_depth; /* Lock depth */ int prio, static_prio; - list_t run_list; + struct list_head run_list; prio_array_t *array; unsigned long sleep_avg; |
