summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2002-09-12 12:58:38 +1000
committerAnton Blanchard <anton@samba.org>2002-09-12 12:58:38 +1000
commite94ed46cd467b4170b82428cf29483da3423794f (patch)
tree9590052dc2d9014b6d79f27b03fcad182fc33d3d /include
parent98398ebac81a1beb9342bec4fc36d6b9185249c0 (diff)
parent50ac9a5ae511a08b12637bfa9231e4680576ea95 (diff)
Merge samba.org:/scratch/anton/linux-2.5
into samba.org:/scratch/anton/linux-2.5_ppc64_new
Diffstat (limited to 'include')
-rw-r--r--include/asm-alpha/pgtable.h2
-rw-r--r--include/asm-arm/pgtable.h2
-rw-r--r--include/asm-cris/pgtable.h2
-rw-r--r--include/asm-generic/rmap.h40
-rw-r--r--include/asm-i386/fixmap.h7
-rw-r--r--include/asm-i386/hardirq.h4
-rw-r--r--include/asm-i386/highmem.h13
-rw-r--r--include/asm-i386/kmap_types.h7
-rw-r--r--include/asm-i386/mmzone.h53
-rw-r--r--include/asm-i386/numaq.h6
-rw-r--r--include/asm-i386/pgtable.h12
-rw-r--r--include/asm-i386/rmap.h14
-rw-r--r--include/asm-ia64/pgtable.h2
-rw-r--r--include/asm-m68k/pgtable.h3
-rw-r--r--include/asm-mips/pgtable.h2
-rw-r--r--include/asm-mips64/pgtable.h2
-rw-r--r--include/asm-parisc/pgtable.h2
-rw-r--r--include/asm-ppc/pgtable.h4
-rw-r--r--include/asm-ppc64/pgtable.h2
-rw-r--r--include/asm-s390/pgtable.h2
-rw-r--r--include/asm-s390x/pgtable.h2
-rw-r--r--include/asm-sh/pgtable.h2
-rw-r--r--include/asm-sparc/pgtable.h2
-rw-r--r--include/asm-sparc64/pgtable.h2
-rw-r--r--include/asm-x86_64/pgtable.h2
-rw-r--r--include/linux/atari_rootsec.h34
-rw-r--r--include/linux/backing-dev.h1
-rw-r--r--include/linux/blkdev.h1
-rw-r--r--include/linux/buffer_head.h1
-rw-r--r--include/linux/fs.h9
-rw-r--r--include/linux/hdreg.h110
-rw-r--r--include/linux/highmem.h1
-rw-r--r--include/linux/mm.h14
-rw-r--r--include/linux/page-flags.h45
-rw-r--r--include/linux/pagevec.h1
-rw-r--r--include/linux/pci.h7
-rw-r--r--include/linux/pci_ids.h27
-rw-r--r--include/linux/sched.h1
-rw-r--r--include/linux/serial.h1
39 files changed, 301 insertions, 143 deletions
diff --git a/include/asm-alpha/pgtable.h b/include/asm-alpha/pgtable.h
index bd7b7c0724e2..ab896db01d1f 100644
--- a/include/asm-alpha/pgtable.h
+++ b/include/asm-alpha/pgtable.h
@@ -370,4 +370,6 @@ extern void paging_init(void);
/* We have our own get_unmapped_area to cope with ADDR_LIMIT_32BIT. */
#define HAVE_ARCH_UNMAPPED_AREA
+typedef pte_t *pte_addr_t;
+
#endif /* _ALPHA_PGTABLE_H */
diff --git a/include/asm-arm/pgtable.h b/include/asm-arm/pgtable.h
index 62456af5582a..ca5bef29d81b 100644
--- a/include/asm-arm/pgtable.h
+++ b/include/asm-arm/pgtable.h
@@ -161,6 +161,8 @@ extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
#define io_remap_page_range(vma,from,phys,size,prot) \
remap_page_range(vma,from,phys,size,prot)
+typedef pte_t *pte_addr_t;
+
#endif /* !__ASSEMBLY__ */
#endif /* _ASMARM_PGTABLE_H */
diff --git a/include/asm-cris/pgtable.h b/include/asm-cris/pgtable.h
index 37ab897db8be..828bf46fa2ff 100644
--- a/include/asm-cris/pgtable.h
+++ b/include/asm-cris/pgtable.h
@@ -515,4 +515,6 @@ static inline void update_mmu_cache(struct vm_area_struct * vma,
*/
#define pgtable_cache_init() do { } while (0)
+typedef pte_t *pte_addr_t;
+
#endif /* _CRIS_PGTABLE_H */
diff --git a/include/asm-generic/rmap.h b/include/asm-generic/rmap.h
index c7045f3e6923..d96b2e3fed98 100644
--- a/include/asm-generic/rmap.h
+++ b/include/asm-generic/rmap.h
@@ -13,6 +13,16 @@
* - page->index has the high bits of the address
* - the lower bits of the address are calculated from the
* offset of the page table entry within the page table page
+ *
+ * For CONFIG_HIGHPTE, we need to represent the address of a pte in a
+ * scalar pte_addr_t. The pfn of the pte's page is shifted left by PAGE_SIZE
+ * bits and is then ORed with the byte offset of the pte within its page.
+ *
+ * For CONFIG_HIGHMEM4G, the pte_addr_t is 32 bits. 20 for the pfn, 12 for
+ * the offset.
+ *
+ * For CONFIG_HIGHMEM64G, the pte_addr_t is 64 bits. 52 for the pfn, 12 for
+ * the offset.
*/
#include <linux/mm.h>
@@ -39,16 +49,42 @@ static inline void pgtable_remove_rmap(struct page * page)
static inline struct mm_struct * ptep_to_mm(pte_t * ptep)
{
- struct page * page = virt_to_page(ptep);
+ struct page * page = kmap_atomic_to_page(ptep);
return (struct mm_struct *) page->mapping;
}
static inline unsigned long ptep_to_address(pte_t * ptep)
{
- struct page * page = virt_to_page(ptep);
+ struct page * page = kmap_atomic_to_page(ptep);
unsigned long low_bits;
low_bits = ((unsigned long)ptep & ~PAGE_MASK) * PTRS_PER_PTE;
return page->index + low_bits;
}
+#if CONFIG_HIGHPTE
+static inline pte_addr_t ptep_to_paddr(pte_t *ptep)
+{
+ pte_addr_t paddr;
+ paddr = ((pte_addr_t)page_to_pfn(kmap_atomic_to_page(ptep))) << PAGE_SHIFT;
+ return paddr + (pte_addr_t)((unsigned long)ptep & ~PAGE_MASK);
+}
+#else
+static inline pte_addr_t ptep_to_paddr(pte_t *ptep)
+{
+ return (pte_addr_t)ptep;
+}
+#endif
+
+#ifndef CONFIG_HIGHPTE
+static inline pte_t *rmap_ptep_map(pte_addr_t pte_paddr)
+{
+ return (pte_t *)pte_paddr;
+}
+
+static inline void rmap_ptep_unmap(pte_t *pte)
+{
+ return;
+}
+#endif
+
#endif /* _GENERIC_RMAP_H */
diff --git a/include/asm-i386/fixmap.h b/include/asm-i386/fixmap.h
index 603caa2b42c6..29673178d011 100644
--- a/include/asm-i386/fixmap.h
+++ b/include/asm-i386/fixmap.h
@@ -103,6 +103,7 @@ extern void __set_fixmap (enum fixed_addresses idx,
#define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE)
#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT))
+#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
extern void __this_fixmap_does_not_exist(void);
@@ -128,4 +129,10 @@ static inline unsigned long fix_to_virt(const unsigned int idx)
return __fix_to_virt(idx);
}
+static inline unsigned long virt_to_fix(const unsigned long vaddr)
+{
+ BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
+ return __virt_to_fix(vaddr);
+}
+
#endif
diff --git a/include/asm-i386/hardirq.h b/include/asm-i386/hardirq.h
index 707d295eed88..291ce33484b3 100644
--- a/include/asm-i386/hardirq.h
+++ b/include/asm-i386/hardirq.h
@@ -27,8 +27,8 @@ typedef struct {
* - ( bit 26 is the PREEMPT_ACTIVE flag. )
*
* PREEMPT_MASK: 0x000000ff
- * HARDIRQ_MASK: 0x0000ff00
- * SOFTIRQ_MASK: 0x00ff0000
+ * SOFTIRQ_MASK: 0x0000ff00
+ * HARDIRQ_MASK: 0x00ff0000
*/
#define PREEMPT_BITS 8
diff --git a/include/asm-i386/highmem.h b/include/asm-i386/highmem.h
index 0316b53f868f..bc31e801a58f 100644
--- a/include/asm-i386/highmem.h
+++ b/include/asm-i386/highmem.h
@@ -122,6 +122,19 @@ static inline void kunmap_atomic(void *kvaddr, enum km_type type)
dec_preempt_count();
}
+static inline struct page *kmap_atomic_to_page(void *ptr)
+{
+ unsigned long idx, vaddr = (unsigned long)ptr;
+ pte_t *pte;
+
+ if (vaddr < FIXADDR_START)
+ return virt_to_page(ptr);
+
+ idx = virt_to_fix(vaddr);
+ pte = kmap_pte - (idx - FIX_KMAP_BEGIN);
+ return pte_page(*pte);
+}
+
#endif /* __KERNEL__ */
#endif /* _ASM_HIGHMEM_H */
diff --git a/include/asm-i386/kmap_types.h b/include/asm-i386/kmap_types.h
index 5d875871190a..1d4eb14cb6d1 100644
--- a/include/asm-i386/kmap_types.h
+++ b/include/asm-i386/kmap_types.h
@@ -19,9 +19,10 @@ D(5) KM_BIO_SRC_IRQ,
D(6) KM_BIO_DST_IRQ,
D(7) KM_PTE0,
D(8) KM_PTE1,
-D(9) KM_IRQ0,
-D(10) KM_IRQ1,
-D(11) KM_TYPE_NR
+D(9) KM_PTE2,
+D(10) KM_IRQ0,
+D(11) KM_IRQ1,
+D(12) KM_TYPE_NR
};
#undef D
diff --git a/include/asm-i386/mmzone.h b/include/asm-i386/mmzone.h
index a19974ab2115..d2994f116f03 100644
--- a/include/asm-i386/mmzone.h
+++ b/include/asm-i386/mmzone.h
@@ -11,8 +11,8 @@
#ifdef CONFIG_X86_NUMAQ
#include <asm/numaq.h>
#else
-#define PHYSADDR_TO_NID(pa) (0)
-#define PFN_TO_NID(pfn) (0)
+#define pa_to_nid(pa) (0)
+#define pfn_to_nid(pfn) (0)
#ifdef CONFIG_NUMA
#define _cpu_to_node(cpu) 0
#endif /* CONFIG_NUMA */
@@ -22,11 +22,7 @@
#define numa_node_id() _cpu_to_node(smp_processor_id())
#endif /* CONFIG_NUMA */
-struct plat_pglist_data {
- pg_data_t gendata;
-};
-
-extern struct plat_pglist_data *plat_node_data[];
+extern struct pglist_data *node_data[];
/*
* Following are macros that are specific to this numa platform.
@@ -48,12 +44,9 @@ extern struct plat_pglist_data *plat_node_data[];
#define alloc_bootmem_low_pages_node(ignore, x) \
__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, 0)
-#define PLAT_NODE_DATA(n) (plat_node_data[(n)])
-#define PLAT_NODE_DATA_STARTNR(n) \
- (PLAT_NODE_DATA(n)->gendata.node_start_mapnr)
-#define PLAT_NODE_DATA_SIZE(n) (PLAT_NODE_DATA(n)->gendata.node_size)
-#define PLAT_NODE_DATA_LOCALNR(pfn, n) \
- ((pfn) - PLAT_NODE_DATA(n)->gendata.node_start_pfn)
+#define node_startnr(nid) (node_data[nid]->node_start_mapnr)
+#define node_size(nid) (node_data[nid]->node_size)
+#define node_localnr(pfn, nid) ((pfn) - node_data[nid]->node_start_pfn)
/*
* Following are macros that each numa implmentation must define.
@@ -62,39 +55,23 @@ extern struct plat_pglist_data *plat_node_data[];
/*
* Given a kernel address, find the home node of the underlying memory.
*/
-#define KVADDR_TO_NID(kaddr) PHYSADDR_TO_NID(__pa(kaddr))
+#define kvaddr_to_nid(kaddr) pa_to_nid(__pa(kaddr))
/*
* Return a pointer to the node data for node n.
*/
-#define NODE_DATA(n) (&((PLAT_NODE_DATA(n))->gendata))
+#define NODE_DATA(nid) (node_data[nid])
-/*
- * NODE_MEM_MAP gives the kaddr for the mem_map of the node.
- */
-#define NODE_MEM_MAP(nid) (NODE_DATA(nid)->node_mem_map)
-
-/*
- * Given a kaddr, ADDR_TO_MAPBASE finds the owning node of the memory
- * and returns the the mem_map of that node.
- */
-#define ADDR_TO_MAPBASE(kaddr) \
- NODE_MEM_MAP(KVADDR_TO_NID((unsigned long)(kaddr)))
-
-/*
- * Given a kaddr, LOCAL_BASE_ADDR finds the owning node of the memory
- * and returns the kaddr corresponding to first physical page in the
- * node's mem_map.
- */
-#define LOCAL_BASE_ADDR(kaddr) ((unsigned long)__va(NODE_DATA(KVADDR_TO_NID(kaddr))->node_start_pfn << PAGE_SHIFT))
+#define node_mem_map(nid) (NODE_DATA(nid)->node_mem_map)
+#define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn)
-#define LOCAL_MAP_NR(kvaddr) \
- (((unsigned long)(kvaddr)-LOCAL_BASE_ADDR(kvaddr)) >> PAGE_SHIFT)
+#define local_mapnr(kvaddr) \
+ ( (__pa(kvaddr) >> PAGE_SHIFT) - node_start_pfn(kvaddr_to_nid(kvaddr)) )
-#define kern_addr_valid(kaddr) test_bit(LOCAL_MAP_NR(kaddr), \
- NODE_DATA(KVADDR_TO_NID(kaddr))->valid_addr_bitmap)
+#define kern_addr_valid(kaddr) test_bit(local_mapnr(kaddr), \
+ NODE_DATA(kvaddr_to_nid(kaddr))->valid_addr_bitmap)
-#define pfn_to_page(pfn) (NODE_MEM_MAP(PFN_TO_NID(pfn)) + PLAT_NODE_DATA_LOCALNR(pfn, PFN_TO_NID(pfn)))
+#define pfn_to_page(pfn) (node_mem_map(pfn_to_nid(pfn)) + node_localnr(pfn, pfn_to_nid(pfn)))
#define page_to_pfn(page) ((page - page_zone(page)->zone_mem_map) + page_zone(page)->zone_start_pfn)
#define pmd_page(pmd) (pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT))
#endif /* CONFIG_DISCONTIGMEM */
diff --git a/include/asm-i386/numaq.h b/include/asm-i386/numaq.h
index 151bd2759356..ed10442f1dcc 100644
--- a/include/asm-i386/numaq.h
+++ b/include/asm-i386/numaq.h
@@ -38,14 +38,12 @@
#define MAX_ELEMENTS 256
#define ELEMENT_REPRESENTS 8 /* 256 Mb */
-#define PHYSADDR_TO_NID(pa) numaqpa_to_nid(pa)
-#define PFN_TO_NID(pa) numaqpfn_to_nid(pa)
#define MAX_NUMNODES 8
#ifdef CONFIG_NUMA
#define _cpu_to_node(cpu) (cpu_to_logical_apicid(cpu) >> 4)
#endif /* CONFIG_NUMA */
-extern int numaqpa_to_nid(u64);
-extern int numaqpfn_to_nid(unsigned long);
+extern int pa_to_nid(u64);
+extern int pfn_to_nid(unsigned long);
extern void get_memcfg_numaq(void);
#define get_memcfg_numa() get_memcfg_numaq()
diff --git a/include/asm-i386/pgtable.h b/include/asm-i386/pgtable.h
index 774f33860301..5a066b28aa42 100644
--- a/include/asm-i386/pgtable.h
+++ b/include/asm-i386/pgtable.h
@@ -266,6 +266,18 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
#define pte_unmap(pte) kunmap_atomic(pte, KM_PTE0)
#define pte_unmap_nested(pte) kunmap_atomic(pte, KM_PTE1)
+#if defined(CONFIG_HIGHPTE) && defined(CONFIG_HIGHMEM4G)
+typedef u32 pte_addr_t;
+#endif
+
+#if defined(CONFIG_HIGHPTE) && defined(CONFIG_HIGHMEM64G)
+typedef u64 pte_addr_t;
+#endif
+
+#if !defined(CONFIG_HIGHPTE)
+typedef pte_t *pte_addr_t;
+#endif
+
/*
* The i386 doesn't have any external MMU info: the kernel page
* tables contain all the necessary information.
diff --git a/include/asm-i386/rmap.h b/include/asm-i386/rmap.h
index 5989b2938b5b..353afee85e63 100644
--- a/include/asm-i386/rmap.h
+++ b/include/asm-i386/rmap.h
@@ -4,4 +4,18 @@
/* nothing to see, move along */
#include <asm-generic/rmap.h>
+#ifdef CONFIG_HIGHPTE
+static inline pte_t *rmap_ptep_map(pte_addr_t pte_paddr)
+{
+ unsigned long pfn = (unsigned long)(pte_paddr >> PAGE_SHIFT);
+ unsigned long off = ((unsigned long)pte_paddr) & ~PAGE_MASK;
+ return (pte_t *)((char *)kmap_atomic(pfn_to_page(pfn), KM_PTE2) + off);
+}
+
+static inline void rmap_ptep_unmap(pte_t *pte)
+{
+ kunmap_atomic(pte, KM_PTE2);
+}
+#endif
+
#endif
diff --git a/include/asm-ia64/pgtable.h b/include/asm-ia64/pgtable.h
index cc8c0a29b335..7188312004a4 100644
--- a/include/asm-ia64/pgtable.h
+++ b/include/asm-ia64/pgtable.h
@@ -420,6 +420,8 @@ extern unsigned long empty_zero_page[PAGE_SIZE/sizeof(unsigned long)];
/* We provide our own get_unmapped_area to cope with VA holes for userland */
#define HAVE_ARCH_UNMAPPED_AREA
+typedef pte_t *pte_addr_t;
+
# endif /* !__ASSEMBLY__ */
/*
diff --git a/include/asm-m68k/pgtable.h b/include/asm-m68k/pgtable.h
index 56e3311c1a89..22632064a4ed 100644
--- a/include/asm-m68k/pgtable.h
+++ b/include/asm-m68k/pgtable.h
@@ -171,6 +171,9 @@ extern inline void update_mmu_cache(struct vm_area_struct * vma,
#ifndef __ASSEMBLY__
#include <asm-generic/pgtable.h>
+
+typedef pte_t *pte_addr_t;
+
#endif /* !__ASSEMBLY__ */
/*
diff --git a/include/asm-mips/pgtable.h b/include/asm-mips/pgtable.h
index bec6e22366e5..3ca40f63456e 100644
--- a/include/asm-mips/pgtable.h
+++ b/include/asm-mips/pgtable.h
@@ -771,6 +771,8 @@ extern inline void set_context(unsigned long val)
#include <asm-generic/pgtable.h>
+typedef pte_t *pte_addr_t;
+
#endif /* !defined (_LANGUAGE_ASSEMBLY) */
#define io_remap_page_range remap_page_range
diff --git a/include/asm-mips64/pgtable.h b/include/asm-mips64/pgtable.h
index e8ec5740d3b0..ded7d0a0a986 100644
--- a/include/asm-mips64/pgtable.h
+++ b/include/asm-mips64/pgtable.h
@@ -811,6 +811,8 @@ extern inline void set_context(unsigned long val)
#include <asm-generic/pgtable.h>
+typedef pte_t *pte_addr_t;
+
#endif /* !defined (_LANGUAGE_ASSEMBLY) */
/*
diff --git a/include/asm-parisc/pgtable.h b/include/asm-parisc/pgtable.h
index c1d676cf92ea..7c74152d3054 100644
--- a/include/asm-parisc/pgtable.h
+++ b/include/asm-parisc/pgtable.h
@@ -326,6 +326,8 @@ extern inline void update_mmu_cache(struct vm_area_struct * vma,
#include <asm-generic/pgtable.h>
+typedef pte_t *pte_addr_t;
+
#endif /* !__ASSEMBLY__ */
#define io_remap_page_range remap_page_range
diff --git a/include/asm-ppc/pgtable.h b/include/asm-ppc/pgtable.h
index a5ee2c62decc..440cffa08cf6 100644
--- a/include/asm-ppc/pgtable.h
+++ b/include/asm-ppc/pgtable.h
@@ -543,6 +543,8 @@ extern void kernel_set_cachemode (unsigned long address, unsigned long size,
*/
#define pgtable_cache_init() do { } while (0)
-#endif /* __ASSEMBLY__ */
+typedef pte_t *pte_addr_t;
+
+#endif /* !__ASSEMBLY__ */
#endif /* _PPC_PGTABLE_H */
#endif /* __KERNEL__ */
diff --git a/include/asm-ppc64/pgtable.h b/include/asm-ppc64/pgtable.h
index 5eedbc705e13..fb3cf407fb34 100644
--- a/include/asm-ppc64/pgtable.h
+++ b/include/asm-ppc64/pgtable.h
@@ -377,5 +377,7 @@ extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t);
extern void hpte_init_pSeries(void);
extern void hpte_init_iSeries(void);
+typedef pte_t *pte_addr_t;
+
#endif /* __ASSEMBLY__ */
#endif /* _PPC64_PGTABLE_H */
diff --git a/include/asm-s390/pgtable.h b/include/asm-s390/pgtable.h
index edff1ae8e7ab..b48ab817e095 100644
--- a/include/asm-s390/pgtable.h
+++ b/include/asm-s390/pgtable.h
@@ -505,6 +505,8 @@ extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
+typedef pte_t *pte_addr_t;
+
#endif /* !__ASSEMBLY__ */
#define kern_addr_valid(addr) (1)
diff --git a/include/asm-s390x/pgtable.h b/include/asm-s390x/pgtable.h
index 2b61308dc287..6c590334ab3a 100644
--- a/include/asm-s390x/pgtable.h
+++ b/include/asm-s390x/pgtable.h
@@ -531,6 +531,8 @@ extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
+typedef pte_t *pte_addr_t;
+
#endif /* !__ASSEMBLY__ */
#define kern_addr_valid(addr) (1)
diff --git a/include/asm-sh/pgtable.h b/include/asm-sh/pgtable.h
index 74034ac9c862..e0fec74f3b83 100644
--- a/include/asm-sh/pgtable.h
+++ b/include/asm-sh/pgtable.h
@@ -310,6 +310,8 @@ extern void update_mmu_cache(struct vm_area_struct * vma,
#define pte_same(A,B) (pte_val(A) == pte_val(B))
+typedef pte_t *pte_addr_t;
+
#endif /* !__ASSEMBLY__ */
#define kern_addr_valid(addr) (1)
diff --git a/include/asm-sparc/pgtable.h b/include/asm-sparc/pgtable.h
index e681254a46ee..b352d0ef9160 100644
--- a/include/asm-sparc/pgtable.h
+++ b/include/asm-sparc/pgtable.h
@@ -442,6 +442,8 @@ extern int io_remap_page_range(struct vm_area_struct *vma, unsigned long from, u
#include <asm-generic/pgtable.h>
+typedef pte_t *pte_addr_t;
+
#endif /* !(__ASSEMBLY__) */
/* We provide our own get_unmapped_area to cope with VA holes for userland */
diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h
index 2551ec268434..f36f6b02c24d 100644
--- a/include/asm-sparc64/pgtable.h
+++ b/include/asm-sparc64/pgtable.h
@@ -369,6 +369,8 @@ extern unsigned long get_fb_unmapped_area(struct file *filp, unsigned long, unsi
extern void check_pgt_cache(void);
+typedef pte_t *pte_addr_t;
+
#endif /* !(__ASSEMBLY__) */
#endif /* !(_SPARC64_PGTABLE_H) */
diff --git a/include/asm-x86_64/pgtable.h b/include/asm-x86_64/pgtable.h
index df3dce4dc976..6d32f60550f7 100644
--- a/include/asm-x86_64/pgtable.h
+++ b/include/asm-x86_64/pgtable.h
@@ -336,6 +336,8 @@ extern inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
+typedef pte_t *pte_addr_t;
+
#endif /* !__ASSEMBLY__ */
#define kern_addr_valid(addr) (1)
diff --git a/include/linux/atari_rootsec.h b/include/linux/atari_rootsec.h
deleted file mode 100644
index 09745f7a0089..000000000000
--- a/include/linux/atari_rootsec.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef _LINUX_ATARI_ROOTSEC_H
-#define _LINUX_ATARI_ROOTSEC_H
-
-/*
- * linux/include/linux/atari_rootsec.h
- * definitions for Atari Rootsector layout
- * by Andreas Schwab (schwab@ls5.informatik.uni-dortmund.de)
- *
- * modified for ICD/Supra partitioning scheme restricted to at most 12
- * partitions
- * by Guenther Kelleter (guenther@pool.informatik.rwth-aachen.de)
- */
-
-struct partition_info
-{
- u_char flg; /* bit 0: active; bit 7: bootable */
- char id[3]; /* "GEM", "BGM", "XGM", or other */
- u32 st; /* start of partition */
- u32 siz; /* length of partition */
-};
-
-struct rootsector
-{
- char unused[0x156]; /* room for boot code */
- struct partition_info icdpart[8]; /* info for ICD-partitions 5..12 */
- char unused2[0xc];
- u32 hd_siz; /* size of disk in blocks */
- struct partition_info part[4];
- u32 bsl_st; /* start of bad sector list */
- u32 bsl_cnt; /* length of bad sector list */
- u16 checksum; /* checksum for bootable disks */
-} __attribute__ ((__packed__));
-
-#endif /* _LINUX_ATARI_ROOTSEC_H */
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h
index 075cacc389e1..898f8e1814ef 100644
--- a/include/linux/backing-dev.h
+++ b/include/linux/backing-dev.h
@@ -19,6 +19,7 @@ enum bdi_state {
struct backing_dev_info {
unsigned long ra_pages; /* max readahead in PAGE_CACHE_SIZE units */
unsigned long state; /* Always use atomic bitops on this */
+ int memory_backed; /* Cannot clean pages with writepage */
};
extern struct backing_dev_info default_backing_dev_info;
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index a11b6181c76f..7ef082f9462f 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -219,6 +219,7 @@ struct request_queue
#define blk_queue_plugged(q) !list_empty(&(q)->plug_list)
#define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags)
#define blk_queue_empty(q) elv_queue_empty(q)
+#define blk_fs_request(rq) ((rq)->flags & REQ_CMD)
#define list_entry_rq(ptr) list_entry((ptr), struct request, queuelist)
#define rq_data_dir(rq) ((rq)->flags & 1)
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
index f9c9aafdf036..6e98963a7a49 100644
--- a/include/linux/buffer_head.h
+++ b/include/linux/buffer_head.h
@@ -167,6 +167,7 @@ void wakeup_bdflush(void);
struct buffer_head *alloc_buffer_head(void);
void free_buffer_head(struct buffer_head * bh);
void FASTCALL(unlock_buffer(struct buffer_head *bh));
+extern int buffer_heads_over_limit;
/*
* Generic address_space_operations implementations for buffer_head-backed
diff --git a/include/linux/fs.h b/include/linux/fs.h
index f67b149a06ee..d58cd8b88fa8 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -526,10 +526,10 @@ extern int init_private_file(struct file *, struct dentry *, int);
#define FL_POSIX 1
#define FL_FLOCK 2
-#define FL_BROKEN 4 /* broken flock() emulation */
-#define FL_ACCESS 8 /* for processes suspended by mandatory locking */
+#define FL_ACCESS 8 /* not trying to lock, just looking */
#define FL_LOCKD 16 /* lock held by rpc.lockd */
#define FL_LEASE 32 /* lease held on this file */
+#define FL_SLEEP 128 /* A blocking lock */
/*
* The POSIX file lock owner is determined by
@@ -591,9 +591,9 @@ extern void locks_copy_lock(struct file_lock *, struct file_lock *);
extern void locks_remove_posix(struct file *, fl_owner_t);
extern void locks_remove_flock(struct file *);
extern struct file_lock *posix_test_lock(struct file *, struct file_lock *);
-extern int posix_lock_file(struct file *, struct file_lock *, unsigned int);
+extern int posix_lock_file(struct file *, struct file_lock *);
extern void posix_block_lock(struct file_lock *, struct file_lock *);
-extern void posix_unblock_lock(struct file_lock *);
+extern void posix_unblock_lock(struct file *, struct file_lock *);
extern int posix_locks_deadlock(struct file_lock *, struct file_lock *);
extern int __get_lease(struct inode *inode, unsigned int flags);
extern time_t lease_get_mtime(struct inode *);
@@ -660,7 +660,6 @@ struct super_block {
struct list_head s_dirty; /* dirty inodes */
struct list_head s_io; /* parked for writeback */
- struct list_head s_locked_inodes;/* inodes being synced */
struct list_head s_anon; /* anonymous dentries for (nfs) exporting */
struct list_head s_files;
diff --git a/include/linux/hdreg.h b/include/linux/hdreg.h
index 5c36a4b7043b..e82b48002e31 100644
--- a/include/linux/hdreg.h
+++ b/include/linux/hdreg.h
@@ -32,7 +32,7 @@
#define ECC_STAT 0x04 /* Corrected error */
#define DRQ_STAT 0x08
#define SEEK_STAT 0x10
-#define SERVICE_STAT SEEK_STAT
+#define SRV_STAT 0x10
#define WRERR_STAT 0x20
#define READY_STAT 0x40
#define BUSY_STAT 0x80
@@ -48,6 +48,13 @@
#define BBD_ERR 0x80 /* pre-EIDE meaning: block marked bad */
#define ICRC_ERR 0x80 /* new meaning: CRC error during transfer */
+/* Bits of HD_NSECTOR */
+#define CD 0x01
+#define IO 0x02
+#define REL 0x04
+#define TAG_MASK 0xf8
+
+
/*
* Command Header sizes for IOCTL commands
*/
@@ -70,10 +77,11 @@
*/
#define IDE_TASKFILE_STD_OUT_FLAGS 0xFE
#define IDE_TASKFILE_STD_IN_FLAGS 0xFE
-#define IDE_HOB_STD_OUT_FLAGS 0x3C /* sector, nsector lcyl and hcyl */
+#define IDE_HOB_STD_OUT_FLAGS 0x3C
#define IDE_HOB_STD_IN_FLAGS 0x3C
typedef unsigned char task_ioreg_t;
+typedef unsigned long sata_ioreg_t;
typedef union ide_reg_valid_s {
unsigned all : 16;
@@ -170,38 +178,83 @@ typedef struct hd_drive_hob_hdr {
/* ATA/ATAPI Commands pre T13 Spec */
#define WIN_NOP 0x00
+/*
+ * 0x01->0x02 Reserved
+ */
#define CFA_REQ_EXT_ERROR_CODE 0x03 /* CFA Request Extended Error Code */
+/*
+ * 0x04->0x07 Reserved
+ */
#define WIN_SRST 0x08 /* ATAPI soft reset command */
#define WIN_DEVICE_RESET 0x08
+/*
+ * 0x09->0x0F Reserved
+ */
#define WIN_RECAL 0x10
-#define WIN_RESTORE 0x10
+#define WIN_RESTORE WIN_RECAL
+/*
+ * 0x10->0x1F Reserved
+ */
#define WIN_READ 0x20 /* 28-Bit */
+#define WIN_READ_ONCE 0x21 /* 28-Bit without retries */
+#define WIN_READ_LONG 0x22 /* 28-Bit */
+#define WIN_READ_LONG_ONCE 0x23 /* 28-Bit without retries */
#define WIN_READ_EXT 0x24 /* 48-Bit */
#define WIN_READDMA_EXT 0x25 /* 48-Bit */
#define WIN_READDMA_QUEUED_EXT 0x26 /* 48-Bit */
#define WIN_READ_NATIVE_MAX_EXT 0x27 /* 48-Bit */
+/*
+ * 0x28
+ */
#define WIN_MULTREAD_EXT 0x29 /* 48-Bit */
+/*
+ * 0x2A->0x2F Reserved
+ */
#define WIN_WRITE 0x30 /* 28-Bit */
+#define WIN_WRITE_ONCE 0x31 /* 28-Bit without retries */
+#define WIN_WRITE_LONG 0x32 /* 28-Bit */
+#define WIN_WRITE_LONG_ONCE 0x33 /* 28-Bit without retries */
#define WIN_WRITE_EXT 0x34 /* 48-Bit */
#define WIN_WRITEDMA_EXT 0x35 /* 48-Bit */
#define WIN_WRITEDMA_QUEUED_EXT 0x36 /* 48-Bit */
#define WIN_SET_MAX_EXT 0x37 /* 48-Bit */
#define CFA_WRITE_SECT_WO_ERASE 0x38 /* CFA Write Sectors without erase */
#define WIN_MULTWRITE_EXT 0x39 /* 48-Bit */
+/*
+ * 0x3A->0x3B Reserved
+ */
#define WIN_WRITE_VERIFY 0x3C /* 28-Bit */
+/*
+ * 0x3D->0x3F Reserved
+ */
#define WIN_VERIFY 0x40 /* 28-Bit - Read Verify Sectors */
+#define WIN_VERIFY_ONCE 0x41 /* 28-Bit - without retries */
#define WIN_VERIFY_EXT 0x42 /* 48-Bit */
+/*
+ * 0x43->0x4F Reserved
+ */
#define WIN_FORMAT 0x50
+/*
+ * 0x51->0x5F Reserved
+ */
#define WIN_INIT 0x60
-#define WIN_SEEK 0x70
+/*
+ * 0x61->0x5F Reserved
+ */
+#define WIN_SEEK 0x70 /* 0x70-0x7F Reserved */
+
#define CFA_TRANSLATE_SECTOR 0x87 /* CFA Translate Sector */
#define WIN_DIAGNOSE 0x90
#define WIN_SPECIFY 0x91 /* set drive geometry translation */
#define WIN_DOWNLOAD_MICROCODE 0x92
#define WIN_STANDBYNOW2 0x94
+#define WIN_STANDBY2 0x96
#define WIN_SETIDLE2 0x97
#define WIN_CHECKPOWERMODE2 0x98
#define WIN_SLEEPNOW2 0x99
+/*
+ * 0x9A VENDOR
+ */
#define WIN_PACKETCMD 0xA0 /* Send a packet command. */
#define WIN_PIDENTIFY 0xA1 /* identify ATAPI device */
#define WIN_QUEUED_SERVICE 0xA2
@@ -212,10 +265,15 @@ typedef struct hd_drive_hob_hdr {
#define WIN_SETMULT 0xC6 /* enable/disable multiple mode */
#define WIN_READDMA_QUEUED 0xC7 /* read sectors using Queued DMA transfers */
#define WIN_READDMA 0xC8 /* read sectors using DMA transfers */
+#define WIN_READDMA_ONCE 0xC9 /* 28-Bit - without retries */
#define WIN_WRITEDMA 0xCA /* write sectors using DMA transfers */
+#define WIN_WRITEDMA_ONCE 0xCB /* 28-Bit - without retries */
#define WIN_WRITEDMA_QUEUED 0xCC /* write sectors using Queued DMA transfers */
#define CFA_WRITE_MULTI_WO_ERASE 0xCD /* CFA Write multiple without erase */
#define WIN_GETMEDIASTATUS 0xDA
+#define WIN_ACKMEDIACHANGE 0xDB /* ATA-1, ATA-2 vendor */
+#define WIN_POSTBOOT 0xDC
+#define WIN_PREBOOT 0xDD
#define WIN_DOORLOCK 0xDE /* lock door on removable drives */
#define WIN_DOORUNLOCK 0xDF /* unlock door on removable drives */
#define WIN_STANDBYNOW1 0xE0
@@ -227,6 +285,8 @@ typedef struct hd_drive_hob_hdr {
#define WIN_SLEEPNOW1 0xE6
#define WIN_FLUSH_CACHE 0xE7
#define WIN_WRITE_BUFFER 0xE8 /* force write only 1 sector */
+#define WIN_WRITE_SAME 0xE9 /* read ata-2 to use */
+ /* SET_FEATURES 0x22 or 0xDD */
#define WIN_FLUSH_CACHE_EXT 0xEA /* 48-Bit */
#define WIN_IDENTIFY 0xEC /* ask drive to identify itself */
#define WIN_MEDIAEJECT 0xED
@@ -289,6 +349,7 @@ typedef struct hd_drive_hob_hdr {
# define XFER_PIO_SLOW 0x00 /* 0000|0000 */
#define SETFEATURES_DIS_DEFECT 0x04 /* Disable Defect Management */
#define SETFEATURES_EN_APM 0x05 /* Enable advanced power management */
+#define SETFEATURES_EN_SAME_R 0x22 /* for a region ATA-1 */
#define SETFEATURES_DIS_MSN 0x31 /* Disable Media Status Notification */
#define SETFEATURES_DIS_RETRY 0x33 /* Disable Retry */
#define SETFEATURES_EN_AAM 0x42 /* Enable Automatic Acoustic Management */
@@ -308,11 +369,13 @@ typedef struct hd_drive_hob_hdr {
#define SETFEATURES_EN_RETRY 0x99 /* Enable Retry */
#define SETFEATURES_EN_RLA 0xAA /* Enable read look-ahead feature */
#define SETFEATURES_PREFETCH 0xAB /* Sets drive prefetch value */
+#define SETFEATURES_EN_REST 0xAC /* ATA-1 */
#define SETFEATURES_4B_RW_LONG 0xBB /* Set Lenght of 4 bytes */
#define SETFEATURES_DIS_AAM 0xC2 /* Disable Automatic Acoustic Management */
#define SETFEATURES_EN_RPOD 0xCC /* Enable reverting to power on defaults */
-#define SETFEATURES_DIS_RI 0xDD /* Disable release interrupt */
-#define SETFEATURES_DIS_SI 0xDE /* Disable SERVICE interrupt */
+#define SETFEATURES_DIS_RI 0xDD /* Disable release interrupt ATAPI */
+#define SETFEATURES_EN_SAME_M 0xDD /* for a entire device ATA-1 */
+#define SETFEATURES_DIS_SI 0xDE /* Disable SERVICE interrupt ATAPI */
/* WIN_SECURITY sub-commands */
@@ -343,6 +406,9 @@ struct hd_big_geometry {
#define HDIO_GET_UNMASKINTR 0x0302 /* get current unmask setting */
#define HDIO_GET_MULTCOUNT 0x0304 /* get current IDE blockmode setting */
#define HDIO_GET_QDMA 0x0305 /* get use-qdma flag */
+
+#define HDIO_SET_XFER 0x0306 /* set transfer rate via proc */
+
#define HDIO_OBSOLETE_IDENTITY 0x0307 /* OBSOLETE, DO NOT USE: returns 142 bytes */
#define HDIO_GET_KEEPSETTINGS 0x0308 /* get keep-settings-on-reset flag */
#define HDIO_GET_32BIT 0x0309 /* get current io_32bit setting */
@@ -390,6 +456,9 @@ enum {
/* 0x330 is reserved - used to be HDIO_GETGEO_BIG */
#define HDIO_GETGEO_BIG_RAW 0x0331 /* */
+#define HDIO_SET_IDE_SCSI 0x0338
+#define HDIO_SET_SCSI_IDE 0x0339
+
#define __NEW_HD_DRIVE_ID
/*
@@ -506,7 +575,10 @@ struct hd_driveid {
* cmd set-feature supported extensions
* 15: Shall be ZERO
* 14: Shall be ONE
- * 13:3 reserved
+ * 13:6 reserved
+ * 5: General Purpose Logging
+ * 4: Streaming Feature Set
+ * 3: Media Card Pass Through
* 2: Media Serial Number Valid
* 1: SMART selt-test supported
* 0: SMART error logging
@@ -553,19 +625,22 @@ struct hd_driveid {
* command set-feature default
* 15: Shall be ZERO
* 14: Shall be ONE
- * 13:3 reserved
+ * 13:6 reserved
+ * 5: General Purpose Logging enabled
+ * 4: Valid CONFIGURE STREAM executed
+ * 3: Media Card Pass Through enabled
* 2: Media Serial Number Valid
* 1: SMART selt-test supported
* 0: SMART error logging
*/
unsigned short dma_ultra; /* (word 88) */
- unsigned short word89; /* reserved (word 89) */
- unsigned short word90; /* reserved (word 90) */
+ unsigned short trseuc; /* time required for security erase */
+ unsigned short trsEuc; /* time required for enhanced erase */
unsigned short CurAPMvalues; /* current APM values */
- unsigned short word92; /* reserved (word 92) */
+ unsigned short mprc; /* master password revision code */
unsigned short hw_config; /* hardware config (word 93)
- * 15:
- * 14:
+ * 15: Shall be ZERO
+ * 14: Shall be ONE
* 13:
* 12:
* 11:
@@ -579,13 +654,16 @@ struct hd_driveid {
* 3:
* 2:
* 1:
- * 0:
+ * 0: Shall be ONE
*/
unsigned short acoustic; /* (word 94)
* 15:8 Vendor's recommended value
* 7:0 current value
*/
- unsigned short words95_99[5]; /* reserved words 95-99 */
+ unsigned short msrqs; /* min stream request size */
+ unsigned short sxfert; /* stream transfer time */
+ unsigned short sal; /* stream access latency */
+ unsigned int spg; /* stream performance granularity */
unsigned long long lba_capacity_2;/* 48-bit total number of sectors */
unsigned short words104_125[22];/* reserved words 104-125 */
unsigned short last_lun; /* (word 126) */
@@ -634,7 +712,7 @@ struct hd_driveid {
* 15:8 Checksum
* 7:0 Signature
*/
-} __attribute__((packed));
+};
/*
* IDE "nice" flags. These are used on a per drive basis to determine
diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index 370177037315..042e6ddfcf8a 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -26,6 +26,7 @@ static inline void *kmap(struct page *page) { return page_address(page); }
#define kmap_atomic(page, idx) page_address(page)
#define kunmap_atomic(addr, idx) do { } while (0)
+#define kmap_atomic_to_page(ptr) virt_to_page(ptr)
#endif /* CONFIG_HIGHMEM */
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 5e01743a0bc6..4dfac9d2cb5c 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -159,9 +159,9 @@ struct page {
struct list_head lru; /* Pageout list, eg. active_list;
protected by zone->lru_lock !! */
union {
- struct pte_chain * chain; /* Reverse pte mapping pointer.
+ struct pte_chain *chain;/* Reverse pte mapping pointer.
* protected by PG_chainlock */
- pte_t * direct;
+ pte_addr_t direct;
} pte;
unsigned long private; /* mapping-private opaque data */
@@ -322,6 +322,16 @@ static inline void set_page_zone(struct page *page, unsigned long zone_num)
#endif /* CONFIG_HIGHMEM || WANT_PAGE_VIRTUAL */
/*
+ * Return true if this page is mapped into pagetables. Subtle: test pte.direct
+ * rather than pte.chain. Because sometimes pte.direct is 64-bit, and .chain
+ * is only 32-bit.
+ */
+static inline int page_mapped(struct page *page)
+{
+ return page->pte.direct != 0;
+}
+
+/*
* Error return values for the *_nopage functions
*/
#define NOPAGE_SIGBUS (NULL)
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index 2b2eb67ae7a8..42d1853294ac 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -52,7 +52,7 @@
#define PG_referenced 2
#define PG_uptodate 3
-#define PG_dirty_dontuse 4
+#define PG_dirty 4
#define PG_lru 5
#define PG_active 6
#define PG_slab 7 /* slab debug (Suparna wants this) */
@@ -120,37 +120,11 @@ extern void get_page_state(struct page_state *ret);
#define SetPageUptodate(page) set_bit(PG_uptodate, &(page)->flags)
#define ClearPageUptodate(page) clear_bit(PG_uptodate, &(page)->flags)
-#define PageDirty(page) test_bit(PG_dirty_dontuse, &(page)->flags)
-#define SetPageDirty(page) \
- do { \
- if (!test_and_set_bit(PG_dirty_dontuse, \
- &(page)->flags)) \
- inc_page_state(nr_dirty); \
- } while (0)
-#define TestSetPageDirty(page) \
- ({ \
- int ret; \
- ret = test_and_set_bit(PG_dirty_dontuse, \
- &(page)->flags); \
- if (!ret) \
- inc_page_state(nr_dirty); \
- ret; \
- })
-#define ClearPageDirty(page) \
- do { \
- if (test_and_clear_bit(PG_dirty_dontuse, \
- &(page)->flags)) \
- dec_page_state(nr_dirty); \
- } while (0)
-#define TestClearPageDirty(page) \
- ({ \
- int ret; \
- ret = test_and_clear_bit(PG_dirty_dontuse, \
- &(page)->flags); \
- if (ret) \
- dec_page_state(nr_dirty); \
- ret; \
- })
+#define PageDirty(page) test_bit(PG_dirty, &(page)->flags)
+#define SetPageDirty(page) set_bit(PG_dirty, &(page)->flags)
+#define TestSetPageDirty(page) test_and_set_bit(PG_dirty, &(page)->flags)
+#define ClearPageDirty(page) clear_bit(PG_dirty, &(page)->flags)
+#define TestClearPageDirty(page) test_and_clear_bit(PG_dirty, &(page)->flags)
#define SetPageLRU(page) set_bit(PG_lru, &(page)->flags)
#define PageLRU(page) test_bit(PG_lru, &(page)->flags)
@@ -235,4 +209,11 @@ extern void get_page_state(struct page_state *ret);
extern struct address_space swapper_space;
#define PageSwapCache(page) ((page)->mapping == &swapper_space)
+int test_clear_page_dirty(struct page *page);
+
+static inline void clear_page_dirty(struct page *page)
+{
+ test_clear_page_dirty(page);
+}
+
#endif /* PAGE_FLAGS_H */
diff --git a/include/linux/pagevec.h b/include/linux/pagevec.h
index d7fa36270a90..278689b2fb2a 100644
--- a/include/linux/pagevec.h
+++ b/include/linux/pagevec.h
@@ -20,6 +20,7 @@ void __pagevec_free(struct pagevec *pvec);
void __pagevec_lru_add(struct pagevec *pvec);
void lru_add_drain(void);
void pagevec_deactivate_inactive(struct pagevec *pvec);
+void pagevec_strip(struct pagevec *pvec);
static inline void pagevec_init(struct pagevec *pvec)
{
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 79d909a8643a..ba2e997304fd 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -507,7 +507,7 @@ struct pci_driver {
for(dev = pci_dev_g(pci_devices.next); dev != pci_dev_g(&pci_devices); dev = pci_dev_g(dev->global_list.next))
void pcibios_fixup_bus(struct pci_bus *);
-int pcibios_enable_device(struct pci_dev *);
+int pcibios_enable_device(struct pci_dev *, int mask);
char *pcibios_setup (char *str);
/* Used only when drivers/pci/setup.c is used */
@@ -600,6 +600,7 @@ static int inline pci_write_config_dword(struct pci_dev *dev, int where, u32 val
extern spinlock_t pci_lock;
int pci_enable_device(struct pci_dev *dev);
+int pci_enable_device_bars(struct pci_dev *dev, int mask);
void pci_disable_device(struct pci_dev *dev);
void pci_set_master(struct pci_dev *dev);
#define HAVE_PCI_SET_MWI
@@ -623,9 +624,11 @@ void pdev_enable_device(struct pci_dev *);
void pdev_sort_resources(struct pci_dev *, struct resource_list *);
void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),
int (*)(struct pci_dev *, u8, u8));
-#define HAVE_PCI_REQ_REGIONS
+#define HAVE_PCI_REQ_REGIONS 2
int pci_request_regions(struct pci_dev *, char *);
void pci_release_regions(struct pci_dev *);
+int pci_request_region(struct pci_dev *, int, char *);
+void pci_release_region(struct pci_dev *, int);
/* New-style probing supporting hot-pluggable devices */
int pci_register_driver(struct pci_driver *);
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index a510a4013648..5eea9545b69a 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -370,7 +370,7 @@
#define PCI_DEVICE_ID_AMD_FE_GATE_7006 0x7006
#define PCI_DEVICE_ID_AMD_FE_GATE_7007 0x7007
#define PCI_DEVICE_ID_AMD_FE_GATE_700C 0x700C
-#define PCI_DEVIDE_ID_AMD_FE_GATE_700D 0x700D
+#define PCI_DEVICE_ID_AMD_FE_GATE_700D 0x700D
#define PCI_DEVICE_ID_AMD_FE_GATE_700E 0x700E
#define PCI_DEVICE_ID_AMD_FE_GATE_700F 0x700F
#define PCI_DEVICE_ID_AMD_COBRA_7400 0x7400
@@ -386,10 +386,15 @@
#define PCI_DEVICE_ID_AMD_VIPER_7413 0x7413
#define PCI_DEVICE_ID_AMD_VIPER_7414 0x7414
#define PCI_DEVICE_ID_AMD_OPUS_7440 0x7440
+# define PCI_DEVICE_ID_AMD_VIPER_7440 PCI_DEVICE_ID_AMD_OPUS_7440
#define PCI_DEVICE_ID_AMD_OPUS_7441 0x7441
+# define PCI_DEVICE_ID_AMD_VIPER_7441 PCI_DEVICE_ID_AMD_OPUS_7441
#define PCI_DEVICE_ID_AMD_OPUS_7443 0x7443
+# define PCI_DEVICE_ID_AMD_VIPER_7443 PCI_DEVICE_ID_AMD_OPUS_7443
#define PCI_DEVICE_ID_AMD_OPUS_7448 0x7448
+# define PCI_DEVICE_ID_AMD_VIPER_7448 PCI_DEVICE_ID_AMD_OPUS_7448
#define PCI_DEVICE_ID_AMD_OPUS_7449 0x7449
+# define PCI_DEVICE_ID_AMD_VIPER_7449 PCI_DEVICE_ID_AMD_OPUS_7449
#define PCI_DEVICE_ID_AMD_8111_LAN 0x7462
#define PCI_DEVICE_ID_AMD_8111_IDE 0x7469
#define PCI_DEVICE_ID_AMD_8111_AUDIO 0x746d
@@ -476,19 +481,28 @@
#define PCI_DEVICE_ID_SI_635 0x0635
#define PCI_DEVICE_ID_SI_640 0x0640
#define PCI_DEVICE_ID_SI_645 0x0645
+#define PCI_DEVICE_ID_SI_646 0x0646
+#define PCI_DEVICE_ID_SI_648 0x0648
#define PCI_DEVICE_ID_SI_650 0x0650
+#define PCI_DEVICE_ID_SI_651 0x0651
+#define PCI_DEVICE_ID_SI_652 0x0652
#define PCI_DEVICE_ID_SI_730 0x0730
#define PCI_DEVICE_ID_SI_630_VGA 0x6300
#define PCI_DEVICE_ID_SI_730_VGA 0x7300
#define PCI_DEVICE_ID_SI_735 0x0735
#define PCI_DEVICE_ID_SI_740 0x0740
#define PCI_DEVICE_ID_SI_745 0x0745
+#define PCI_DEVICE_ID_SI_746 0x0746
+#define PCI_DEVICE_ID_SI_748 0x0748
#define PCI_DEVICE_ID_SI_750 0x0750
+#define PCI_DEVICE_ID_SI_751 0x0751
+#define PCI_DEVICE_ID_SI_752 0x0752
#define PCI_DEVICE_ID_SI_900 0x0900
#define PCI_DEVICE_ID_SI_5107 0x5107
#define PCI_DEVICE_ID_SI_5300 0x5300
#define PCI_DEVICE_ID_SI_5511 0x5511
#define PCI_DEVICE_ID_SI_5513 0x5513
+#define PCI_DEVICE_ID_SI_5518 0x5518
#define PCI_DEVICE_ID_SI_5571 0x5571
#define PCI_DEVICE_ID_SI_5591 0x5591
#define PCI_DEVICE_ID_SI_5597 0x5597
@@ -616,6 +630,7 @@
#define PCI_DEVICE_ID_PROMISE_20268 0x4d68
#define PCI_DEVICE_ID_PROMISE_20268R 0x6268
#define PCI_DEVICE_ID_PROMISE_20269 0x4d69
+#define PCI_DEVICE_ID_PROMISE_20270 0x6268
#define PCI_DEVICE_ID_PROMISE_20271 0x6269
#define PCI_DEVICE_ID_PROMISE_20275 0x1275
#define PCI_DEVICE_ID_PROMISE_20276 0x5275
@@ -742,6 +757,9 @@
#define PCI_DEVICE_ID_CMD_670 0x0670
#define PCI_DEVICE_ID_CMD_680 0x0680
+#define PCI_DEVICE_ID_SII_680 0x0680
+#define PCI_DEVICE_ID_SII_3112 0x3112
+
#define PCI_VENDOR_ID_VISION 0x1098
#define PCI_DEVICE_ID_VISION_QD8500 0x0001
#define PCI_DEVICE_ID_VISION_QD8580 0x0002
@@ -989,6 +1007,7 @@
#define PCI_DEVICE_ID_VIA_8233C_0 0x3109
#define PCI_DEVICE_ID_VIA_8361 0x3112
#define PCI_DEVICE_ID_VIA_8233A 0x3147
+#define PCI_DEVICE_ID_VIA_8235 0x3177
#define PCI_DEVICE_ID_VIA_86C100A 0x6100
#define PCI_DEVICE_ID_VIA_8231 0x8231
#define PCI_DEVICE_ID_VIA_8231_4 0x8235
@@ -1122,9 +1141,11 @@
#define PCI_DEVICE_ID_SERVERWORKS_CMIC_HE 0x0011
#define PCI_DEVICE_ID_SERVERWORKS_OSB4 0x0200
#define PCI_DEVICE_ID_SERVERWORKS_CSB5 0x0201
+#define PCI_DEVICE_ID_SERVERWORKS_CSB6 0x0203
#define PCI_DEVICE_ID_SERVERWORKS_OSB4IDE 0x0211
#define PCI_DEVICE_ID_SERVERWORKS_CSB5IDE 0x0212
#define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE 0x0213
+#define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2 0x0217
#define PCI_DEVICE_ID_SERVERWORKS_OSB4USB 0x0220
#define PCI_DEVICE_ID_SERVERWORKS_CSB5USB PCI_DEVICE_ID_SERVERWORKS_OSB4USB
#define PCI_DEVICE_ID_SERVERWORKS_CSB5ISA 0x0230
@@ -1575,6 +1596,9 @@
#define PCI_VENDOR_ID_TEKRAM 0x1de1
#define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29
+#define PCI_VENDOR_ID_HINT 0x3388
+#define PCI_DEVICE_ID_HINT_VXPROII_IDE 0x8013
+
#define PCI_VENDOR_ID_3DLABS 0x3d3d
#define PCI_DEVICE_ID_3DLABS_300SX 0x0001
#define PCI_DEVICE_ID_3DLABS_500TX 0x0002
@@ -1637,6 +1661,7 @@
#define PCI_DEVICE_ID_INTEL_82430 0x0486
#define PCI_DEVICE_ID_INTEL_82434 0x04a3
#define PCI_DEVICE_ID_INTEL_I960 0x0960
+#define PCI_DEVICE_ID_INTEL_I960RM 0x0962
#define PCI_DEVICE_ID_INTEL_82562ET 0x1031
#define PCI_DEVICE_ID_INTEL_82801CAM 0x1038
#define PCI_DEVICE_ID_INTEL_82815_MC 0x1130
diff --git a/include/linux/sched.h b/include/linux/sched.h
index bd7073fdefaf..600035a0b715 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -547,6 +547,7 @@ extern void block_all_signals(int (*notifier)(void *priv), void *priv,
extern void unblock_all_signals(void);
extern int send_sig_info(int, struct siginfo *, struct task_struct *);
extern int force_sig_info(int, struct siginfo *, struct task_struct *);
+extern int __kill_pg_info(int sig, struct siginfo *info, pid_t pgrp);
extern int kill_pg_info(int, struct siginfo *, pid_t);
extern int kill_sl_info(int, struct siginfo *, pid_t);
extern int kill_proc_info(int, struct siginfo *, pid_t);
diff --git a/include/linux/serial.h b/include/linux/serial.h
index 13f23c7ef376..d9d93ae8ad3b 100644
--- a/include/linux/serial.h
+++ b/include/linux/serial.h
@@ -80,7 +80,6 @@ struct serial_struct {
#define SERIAL_IO_PORT 0
#define SERIAL_IO_HUB6 1
#define SERIAL_IO_MEM 2
-#define SERIAL_IO_GSC 3
struct serial_uart_config {
char *name;