aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-04-18 02:56:30 -0400
committerDavid S. Miller <davem@davemloft.net>2008-04-18 02:56:30 -0400
commit1e42198609d73ed1a9adcba2af275c24c2678420 (patch)
tree32fd4d9073bfc0f3909af8f9fb4bcff38951d01a /include
parent794eb6bf20ebf992c040ea831cd3a9c64b0c1f7a (diff)
parent4b119e21d0c66c22e8ca03df05d9de623d0eb50f (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'include')
-rw-r--r--include/asm-arm/arch-s3c2410/spi.h1
-rw-r--r--include/asm-frv/mem-layout.h2
-rw-r--r--include/asm-frv/pgtable.h19
-rw-r--r--include/asm-frv/spr-regs.h14
-rw-r--r--include/asm-frv/system.h21
-rw-r--r--include/asm-mips/cacheflush.h18
-rw-r--r--include/asm-mips/mach-au1x00/au1xxx_ide.h18
-rw-r--r--include/asm-mips/mach-db1x00/db1200.h4
-rw-r--r--include/asm-mips/mach-pb1x00/pb1200.h6
-rw-r--r--include/asm-um/tlb.h1
-rw-r--r--include/asm-x86/irqflags.h29
-rw-r--r--include/asm-x86/linkage.h35
-rw-r--r--include/asm-x86/nops.h20
-rw-r--r--include/linux/cgroup.h1
-rw-r--r--include/linux/hpet.h2
-rw-r--r--include/linux/iocontext.h4
-rw-r--r--include/linux/libata.h25
-rw-r--r--include/linux/linkage.h20
-rw-r--r--include/linux/mbcache.h2
-rw-r--r--include/linux/pnp.h2
-rw-r--r--include/linux/spinlock.h3
-rw-r--r--include/linux/ssb/ssb.h4
-rw-r--r--include/linux/thermal.h2
-rw-r--r--include/linux/virtio.h5
24 files changed, 180 insertions, 78 deletions
diff --git a/include/asm-arm/arch-s3c2410/spi.h b/include/asm-arm/arch-s3c2410/spi.h
index 7ca0ed97a6d0..352d33860b63 100644
--- a/include/asm-arm/arch-s3c2410/spi.h
+++ b/include/asm-arm/arch-s3c2410/spi.h
@@ -15,6 +15,7 @@
15 15
16struct s3c2410_spi_info { 16struct s3c2410_spi_info {
17 unsigned long pin_cs; /* simple gpio cs */ 17 unsigned long pin_cs; /* simple gpio cs */
18 unsigned int num_cs; /* total chipselects */
18 19
19 void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); 20 void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol);
20}; 21};
diff --git a/include/asm-frv/mem-layout.h b/include/asm-frv/mem-layout.h
index 83532252b8be..734a1d0583b6 100644
--- a/include/asm-frv/mem-layout.h
+++ b/include/asm-frv/mem-layout.h
@@ -60,7 +60,7 @@
60 */ 60 */
61#define BRK_BASE __UL(2 * 1024 * 1024 + PAGE_SIZE) 61#define BRK_BASE __UL(2 * 1024 * 1024 + PAGE_SIZE)
62#define STACK_TOP __UL(2 * 1024 * 1024) 62#define STACK_TOP __UL(2 * 1024 * 1024)
63#define STACK_TOP_MAX STACK_TOP 63#define STACK_TOP_MAX __UL(0xc0000000)
64 64
65/* userspace process size */ 65/* userspace process size */
66#ifdef CONFIG_MMU 66#ifdef CONFIG_MMU
diff --git a/include/asm-frv/pgtable.h b/include/asm-frv/pgtable.h
index 6c0682ed5fc9..4e219046fe42 100644
--- a/include/asm-frv/pgtable.h
+++ b/include/asm-frv/pgtable.h
@@ -507,13 +507,22 @@ static inline int pte_file(pte_t pte)
507 */ 507 */
508static inline void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) 508static inline void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte)
509{ 509{
510 struct mm_struct *mm;
510 unsigned long ampr; 511 unsigned long ampr;
511 pgd_t *pge = pgd_offset(current->mm, address);
512 pud_t *pue = pud_offset(pge, address);
513 pmd_t *pme = pmd_offset(pue, address);
514 512
515 ampr = pme->ste[0] & 0xffffff00; 513 mm = current->mm;
516 ampr |= xAMPRx_L | xAMPRx_SS_16Kb | xAMPRx_S | xAMPRx_C | xAMPRx_V; 514 if (mm) {
515 pgd_t *pge = pgd_offset(mm, address);
516 pud_t *pue = pud_offset(pge, address);
517 pmd_t *pme = pmd_offset(pue, address);
518
519 ampr = pme->ste[0] & 0xffffff00;
520 ampr |= xAMPRx_L | xAMPRx_SS_16Kb | xAMPRx_S | xAMPRx_C |
521 xAMPRx_V;
522 } else {
523 address = ULONG_MAX;
524 ampr = 0;
525 }
517 526
518 asm volatile("movgs %0,scr0\n" 527 asm volatile("movgs %0,scr0\n"
519 "movgs %0,scr1\n" 528 "movgs %0,scr1\n"
diff --git a/include/asm-frv/spr-regs.h b/include/asm-frv/spr-regs.h
index c2a541ef828d..01e6af5e99b8 100644
--- a/include/asm-frv/spr-regs.h
+++ b/include/asm-frv/spr-regs.h
@@ -99,9 +99,23 @@
99#define TBR_TT_TRAP1 (0x81 << 4) 99#define TBR_TT_TRAP1 (0x81 << 4)
100#define TBR_TT_TRAP2 (0x82 << 4) 100#define TBR_TT_TRAP2 (0x82 << 4)
101#define TBR_TT_TRAP3 (0x83 << 4) 101#define TBR_TT_TRAP3 (0x83 << 4)
102#define TBR_TT_TRAP120 (0xf8 << 4)
103#define TBR_TT_TRAP121 (0xf9 << 4)
104#define TBR_TT_TRAP122 (0xfa << 4)
105#define TBR_TT_TRAP123 (0xfb << 4)
106#define TBR_TT_TRAP124 (0xfc << 4)
107#define TBR_TT_TRAP125 (0xfd << 4)
102#define TBR_TT_TRAP126 (0xfe << 4) 108#define TBR_TT_TRAP126 (0xfe << 4)
103#define TBR_TT_BREAK (0xff << 4) 109#define TBR_TT_BREAK (0xff << 4)
104 110
111#define TBR_TT_ATOMIC_CMPXCHG32 TBR_TT_TRAP120
112#define TBR_TT_ATOMIC_XCHG32 TBR_TT_TRAP121
113#define TBR_TT_ATOMIC_XOR TBR_TT_TRAP122
114#define TBR_TT_ATOMIC_OR TBR_TT_TRAP123
115#define TBR_TT_ATOMIC_AND TBR_TT_TRAP124
116#define TBR_TT_ATOMIC_SUB TBR_TT_TRAP125
117#define TBR_TT_ATOMIC_ADD TBR_TT_TRAP126
118
105#define __get_TBR() ({ unsigned long x; asm volatile("movsg tbr,%0" : "=r"(x)); x; }) 119#define __get_TBR() ({ unsigned long x; asm volatile("movsg tbr,%0" : "=r"(x)); x; })
106 120
107/* 121/*
diff --git a/include/asm-frv/system.h b/include/asm-frv/system.h
index 2c57f4734746..30a67a9da11a 100644
--- a/include/asm-frv/system.h
+++ b/include/asm-frv/system.h
@@ -179,14 +179,23 @@ do { \
179#define mb() asm volatile ("membar" : : :"memory") 179#define mb() asm volatile ("membar" : : :"memory")
180#define rmb() asm volatile ("membar" : : :"memory") 180#define rmb() asm volatile ("membar" : : :"memory")
181#define wmb() asm volatile ("membar" : : :"memory") 181#define wmb() asm volatile ("membar" : : :"memory")
182#define set_mb(var, value) do { var = value; mb(); } while (0) 182#define read_barrier_depends() barrier()
183 183
184#define smp_mb() mb() 184#ifdef CONFIG_SMP
185#define smp_rmb() rmb() 185#define smp_mb() mb()
186#define smp_wmb() wmb() 186#define smp_rmb() rmb()
187 187#define smp_wmb() wmb()
188#define read_barrier_depends() do {} while(0)
189#define smp_read_barrier_depends() read_barrier_depends() 188#define smp_read_barrier_depends() read_barrier_depends()
189#define set_mb(var, value) \
190 do { xchg(&var, (value)); } while (0)
191#else
192#define smp_mb() barrier()
193#define smp_rmb() barrier()
194#define smp_wmb() barrier()
195#define smp_read_barrier_depends() do {} while(0)
196#define set_mb(var, value) \
197 do { var = (value); barrier(); } while (0)
198#endif
190 199
191#define HARD_RESET_NOW() \ 200#define HARD_RESET_NOW() \
192do { \ 201do { \
diff --git a/include/asm-mips/cacheflush.h b/include/asm-mips/cacheflush.h
index 01e7eadc97e2..d5c0f2fda51b 100644
--- a/include/asm-mips/cacheflush.h
+++ b/include/asm-mips/cacheflush.h
@@ -63,8 +63,22 @@ static inline void flush_icache_page(struct vm_area_struct *vma,
63} 63}
64 64
65extern void (*flush_icache_range)(unsigned long start, unsigned long end); 65extern void (*flush_icache_range)(unsigned long start, unsigned long end);
66#define flush_cache_vmap(start, end) flush_cache_all() 66
67#define flush_cache_vunmap(start, end) flush_cache_all() 67extern void (*__flush_cache_vmap)(void);
68
69static inline void flush_cache_vmap(unsigned long start, unsigned long end)
70{
71 if (cpu_has_dc_aliases)
72 __flush_cache_vmap();
73}
74
75extern void (*__flush_cache_vunmap)(void);
76
77static inline void flush_cache_vunmap(unsigned long start, unsigned long end)
78{
79 if (cpu_has_dc_aliases)
80 __flush_cache_vunmap();
81}
68 82
69extern void copy_to_user_page(struct vm_area_struct *vma, 83extern void copy_to_user_page(struct vm_area_struct *vma,
70 struct page *page, unsigned long vaddr, void *dst, const void *src, 84 struct page *page, unsigned long vaddr, void *dst, const void *src,
diff --git a/include/asm-mips/mach-au1x00/au1xxx_ide.h b/include/asm-mips/mach-au1x00/au1xxx_ide.h
index e4fe26c160ba..89655c0cdcd6 100644
--- a/include/asm-mips/mach-au1x00/au1xxx_ide.h
+++ b/include/asm-mips/mach-au1x00/au1xxx_ide.h
@@ -122,24 +122,6 @@ static const struct drive_list_entry dma_black_list [] = {
122}; 122};
123#endif 123#endif
124 124
125/* function prototyping */
126u8 auide_inb(unsigned long port);
127u16 auide_inw(unsigned long port);
128u32 auide_inl(unsigned long port);
129void auide_insw(unsigned long port, void *addr, u32 count);
130void auide_insl(unsigned long port, void *addr, u32 count);
131void auide_outb(u8 addr, unsigned long port);
132void auide_outbsync(ide_drive_t *drive, u8 addr, unsigned long port);
133void auide_outw(u16 addr, unsigned long port);
134void auide_outl(u32 addr, unsigned long port);
135void auide_outsw(unsigned long port, void *addr, u32 count);
136void auide_outsl(unsigned long port, void *addr, u32 count);
137static void auide_tune_drive(ide_drive_t *drive, byte pio);
138static int auide_tune_chipset(ide_drive_t *drive, u8 speed);
139static int auide_ddma_init( _auide_hwif *auide );
140static void auide_setup_ports(hw_regs_t *hw, _auide_hwif *ahwif);
141int __init auide_probe(void);
142
143/******************************************************************************* 125/*******************************************************************************
144* PIO Mode timing calculation : * 126* PIO Mode timing calculation : *
145* * 127* *
diff --git a/include/asm-mips/mach-db1x00/db1200.h b/include/asm-mips/mach-db1x00/db1200.h
index a6bdac61ab49..d2e28e64932e 100644
--- a/include/asm-mips/mach-db1x00/db1200.h
+++ b/include/asm-mips/mach-db1x00/db1200.h
@@ -173,8 +173,8 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
173#define AU1XXX_SMC91111_IRQ DB1200_ETH_INT 173#define AU1XXX_SMC91111_IRQ DB1200_ETH_INT
174 174
175#define AU1XXX_ATA_PHYS_ADDR (0x18800000) 175#define AU1XXX_ATA_PHYS_ADDR (0x18800000)
176#define AU1XXX_ATA_PHYS_LEN (0x100) 176#define AU1XXX_ATA_REG_OFFSET (5)
177#define AU1XXX_ATA_REG_OFFSET (5) 177#define AU1XXX_ATA_PHYS_LEN (16 << AU1XXX_ATA_REG_OFFSET)
178#define AU1XXX_ATA_INT DB1200_IDE_INT 178#define AU1XXX_ATA_INT DB1200_IDE_INT
179#define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; 179#define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1;
180#define AU1XXX_ATA_RQSIZE 128 180#define AU1XXX_ATA_RQSIZE 128
diff --git a/include/asm-mips/mach-pb1x00/pb1200.h b/include/asm-mips/mach-pb1x00/pb1200.h
index ed5fd7390678..edaa489b58f1 100644
--- a/include/asm-mips/mach-pb1x00/pb1200.h
+++ b/include/asm-mips/mach-pb1x00/pb1200.h
@@ -186,8 +186,8 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
186#define AU1XXX_SMC91111_IRQ PB1200_ETH_INT 186#define AU1XXX_SMC91111_IRQ PB1200_ETH_INT
187 187
188#define AU1XXX_ATA_PHYS_ADDR (0x0C800000) 188#define AU1XXX_ATA_PHYS_ADDR (0x0C800000)
189#define AU1XXX_ATA_PHYS_LEN (0x100) 189#define AU1XXX_ATA_REG_OFFSET (5)
190#define AU1XXX_ATA_REG_OFFSET (5) 190#define AU1XXX_ATA_PHYS_LEN (16 << AU1XXX_ATA_REG_OFFSET)
191#define AU1XXX_ATA_INT PB1200_IDE_INT 191#define AU1XXX_ATA_INT PB1200_IDE_INT
192#define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; 192#define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1;
193#define AU1XXX_ATA_RQSIZE 128 193#define AU1XXX_ATA_RQSIZE 128
@@ -245,7 +245,7 @@ enum external_pb1200_ints {
245 PB1200_SD1_INSERT_INT, 245 PB1200_SD1_INSERT_INT,
246 PB1200_SD1_EJECT_INT, 246 PB1200_SD1_EJECT_INT,
247 247
248 PB1200_INT_END (PB1200_INT_BEGIN + 15) 248 PB1200_INT_END = PB1200_INT_BEGIN + 15
249}; 249};
250 250
251/* For drivers/pcmcia/au1000_db1x00.c */ 251/* For drivers/pcmcia/au1000_db1x00.c */
diff --git a/include/asm-um/tlb.h b/include/asm-um/tlb.h
index 39fc475df6c9..5240fa1c5e08 100644
--- a/include/asm-um/tlb.h
+++ b/include/asm-um/tlb.h
@@ -1,6 +1,7 @@
1#ifndef __UM_TLB_H 1#ifndef __UM_TLB_H
2#define __UM_TLB_H 2#define __UM_TLB_H
3 3
4#include <linux/pagemap.h>
4#include <linux/swap.h> 5#include <linux/swap.h>
5#include <asm/percpu.h> 6#include <asm/percpu.h>
6#include <asm/pgalloc.h> 7#include <asm/pgalloc.h>
diff --git a/include/asm-x86/irqflags.h b/include/asm-x86/irqflags.h
index 92021c1ffa3a..0e2292483b35 100644
--- a/include/asm-x86/irqflags.h
+++ b/include/asm-x86/irqflags.h
@@ -70,6 +70,26 @@ static inline void raw_local_irq_restore(unsigned long flags)
70 native_restore_fl(flags); 70 native_restore_fl(flags);
71} 71}
72 72
73#ifdef CONFIG_X86_VSMP
74
75/*
76 * Interrupt control for the VSMP architecture:
77 */
78
79static inline void raw_local_irq_disable(void)
80{
81 unsigned long flags = __raw_local_save_flags();
82 raw_local_irq_restore((flags & ~X86_EFLAGS_IF) | X86_EFLAGS_AC);
83}
84
85static inline void raw_local_irq_enable(void)
86{
87 unsigned long flags = __raw_local_save_flags();
88 raw_local_irq_restore((flags | X86_EFLAGS_IF) & (~X86_EFLAGS_AC));
89}
90
91#else
92
73static inline void raw_local_irq_disable(void) 93static inline void raw_local_irq_disable(void)
74{ 94{
75 native_irq_disable(); 95 native_irq_disable();
@@ -80,6 +100,8 @@ static inline void raw_local_irq_enable(void)
80 native_irq_enable(); 100 native_irq_enable();
81} 101}
82 102
103#endif
104
83/* 105/*
84 * Used in the idle loop; sti takes one instruction cycle 106 * Used in the idle loop; sti takes one instruction cycle
85 * to complete: 107 * to complete:
@@ -137,10 +159,17 @@ static inline unsigned long __raw_local_irq_save(void)
137#define raw_local_irq_save(flags) \ 159#define raw_local_irq_save(flags) \
138 do { (flags) = __raw_local_irq_save(); } while (0) 160 do { (flags) = __raw_local_irq_save(); } while (0)
139 161
162#ifdef CONFIG_X86_VSMP
163static inline int raw_irqs_disabled_flags(unsigned long flags)
164{
165 return !(flags & X86_EFLAGS_IF) || (flags & X86_EFLAGS_AC);
166}
167#else
140static inline int raw_irqs_disabled_flags(unsigned long flags) 168static inline int raw_irqs_disabled_flags(unsigned long flags)
141{ 169{
142 return !(flags & X86_EFLAGS_IF); 170 return !(flags & X86_EFLAGS_IF);
143} 171}
172#endif
144 173
145static inline int raw_irqs_disabled(void) 174static inline int raw_irqs_disabled(void)
146{ 175{
diff --git a/include/asm-x86/linkage.h b/include/asm-x86/linkage.h
index 31739c7d66a9..c048353f4b85 100644
--- a/include/asm-x86/linkage.h
+++ b/include/asm-x86/linkage.h
@@ -8,12 +8,45 @@
8 8
9#ifdef CONFIG_X86_32 9#ifdef CONFIG_X86_32
10#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) 10#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
11#define prevent_tail_call(ret) __asm__ ("" : "=r" (ret) : "0" (ret))
12/* 11/*
13 * For 32-bit UML - mark functions implemented in assembly that use 12 * For 32-bit UML - mark functions implemented in assembly that use
14 * regparm input parameters: 13 * regparm input parameters:
15 */ 14 */
16#define asmregparm __attribute__((regparm(3))) 15#define asmregparm __attribute__((regparm(3)))
16
17/*
18 * Make sure the compiler doesn't do anything stupid with the
19 * arguments on the stack - they are owned by the *caller*, not
20 * the callee. This just fools gcc into not spilling into them,
21 * and keeps it from doing tailcall recursion and/or using the
22 * stack slots for temporaries, since they are live and "used"
23 * all the way to the end of the function.
24 *
25 * NOTE! On x86-64, all the arguments are in registers, so this
26 * only matters on a 32-bit kernel.
27 */
28#define asmlinkage_protect(n, ret, args...) \
29 __asmlinkage_protect##n(ret, ##args)
30#define __asmlinkage_protect_n(ret, args...) \
31 __asm__ __volatile__ ("" : "=r" (ret) : "0" (ret), ##args)
32#define __asmlinkage_protect0(ret) \
33 __asmlinkage_protect_n(ret)
34#define __asmlinkage_protect1(ret, arg1) \
35 __asmlinkage_protect_n(ret, "g" (arg1))
36#define __asmlinkage_protect2(ret, arg1, arg2) \
37 __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2))
38#define __asmlinkage_protect3(ret, arg1, arg2, arg3) \
39 __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3))
40#define __asmlinkage_protect4(ret, arg1, arg2, arg3, arg4) \
41 __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \
42 "g" (arg4))
43#define __asmlinkage_protect5(ret, arg1, arg2, arg3, arg4, arg5) \
44 __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \
45 "g" (arg4), "g" (arg5))
46#define __asmlinkage_protect6(ret, arg1, arg2, arg3, arg4, arg5, arg6) \
47 __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \
48 "g" (arg4), "g" (arg5), "g" (arg6))
49
17#endif 50#endif
18 51
19#ifdef CONFIG_X86_ALIGNMENT_16 52#ifdef CONFIG_X86_ALIGNMENT_16
diff --git a/include/asm-x86/nops.h b/include/asm-x86/nops.h
index e3b2bce0aff8..b3930ae539b3 100644
--- a/include/asm-x86/nops.h
+++ b/include/asm-x86/nops.h
@@ -73,16 +73,7 @@
73#define P6_NOP7 ".byte 0x0f,0x1f,0x80,0,0,0,0\n" 73#define P6_NOP7 ".byte 0x0f,0x1f,0x80,0,0,0,0\n"
74#define P6_NOP8 ".byte 0x0f,0x1f,0x84,0x00,0,0,0,0\n" 74#define P6_NOP8 ".byte 0x0f,0x1f,0x84,0x00,0,0,0,0\n"
75 75
76#if defined(CONFIG_MK8) 76#if defined(CONFIG_MK7)
77#define ASM_NOP1 K8_NOP1
78#define ASM_NOP2 K8_NOP2
79#define ASM_NOP3 K8_NOP3
80#define ASM_NOP4 K8_NOP4
81#define ASM_NOP5 K8_NOP5
82#define ASM_NOP6 K8_NOP6
83#define ASM_NOP7 K8_NOP7
84#define ASM_NOP8 K8_NOP8
85#elif defined(CONFIG_MK7)
86#define ASM_NOP1 K7_NOP1 77#define ASM_NOP1 K7_NOP1
87#define ASM_NOP2 K7_NOP2 78#define ASM_NOP2 K7_NOP2
88#define ASM_NOP3 K7_NOP3 79#define ASM_NOP3 K7_NOP3
@@ -100,6 +91,15 @@
100#define ASM_NOP6 P6_NOP6 91#define ASM_NOP6 P6_NOP6
101#define ASM_NOP7 P6_NOP7 92#define ASM_NOP7 P6_NOP7
102#define ASM_NOP8 P6_NOP8 93#define ASM_NOP8 P6_NOP8
94#elif defined(CONFIG_X86_64)
95#define ASM_NOP1 K8_NOP1
96#define ASM_NOP2 K8_NOP2
97#define ASM_NOP3 K8_NOP3
98#define ASM_NOP4 K8_NOP4
99#define ASM_NOP5 K8_NOP5
100#define ASM_NOP6 K8_NOP6
101#define ASM_NOP7 K8_NOP7
102#define ASM_NOP8 K8_NOP8
103#else 103#else
104#define ASM_NOP1 GENERIC_NOP1 104#define ASM_NOP1 GENERIC_NOP1
105#define ASM_NOP2 GENERIC_NOP2 105#define ASM_NOP2 GENERIC_NOP2
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
index 028ba3b523b1..a6a6035a4e1e 100644
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -256,6 +256,7 @@ struct cgroup_subsys {
256 void (*bind)(struct cgroup_subsys *ss, struct cgroup *root); 256 void (*bind)(struct cgroup_subsys *ss, struct cgroup *root);
257 int subsys_id; 257 int subsys_id;
258 int active; 258 int active;
259 int disabled;
259 int early_init; 260 int early_init;
260#define MAX_CGROUP_TYPE_NAMELEN 32 261#define MAX_CGROUP_TYPE_NAMELEN 32
261 const char *name; 262 const char *name;
diff --git a/include/linux/hpet.h b/include/linux/hpet.h
index 9cd94bfd07e5..2dc29ce6c8e4 100644
--- a/include/linux/hpet.h
+++ b/include/linux/hpet.h
@@ -64,7 +64,7 @@ struct hpet {
64 */ 64 */
65 65
66#define Tn_INT_ROUTE_CAP_MASK (0xffffffff00000000ULL) 66#define Tn_INT_ROUTE_CAP_MASK (0xffffffff00000000ULL)
67#define Tn_INT_ROUTE_CAP_SHIFT (32UL) 67#define Tn_INI_ROUTE_CAP_SHIFT (32UL)
68#define Tn_FSB_INT_DELCAP_MASK (0x8000UL) 68#define Tn_FSB_INT_DELCAP_MASK (0x8000UL)
69#define Tn_FSB_INT_DELCAP_SHIFT (15) 69#define Tn_FSB_INT_DELCAP_SHIFT (15)
70#define Tn_FSB_EN_CNF_MASK (0x4000UL) 70#define Tn_FSB_EN_CNF_MASK (0x4000UL)
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h
index cac4b364cd40..2b7a1187cb29 100644
--- a/include/linux/iocontext.h
+++ b/include/linux/iocontext.h
@@ -91,8 +91,10 @@ static inline struct io_context *ioc_task_link(struct io_context *ioc)
91 * if ref count is zero, don't allow sharing (ioc is going away, it's 91 * if ref count is zero, don't allow sharing (ioc is going away, it's
92 * a race). 92 * a race).
93 */ 93 */
94 if (ioc && atomic_inc_not_zero(&ioc->refcount)) 94 if (ioc && atomic_inc_not_zero(&ioc->refcount)) {
95 atomic_inc(&ioc->nr_tasks);
95 return ioc; 96 return ioc;
97 }
96 98
97 return NULL; 99 return NULL;
98} 100}
diff --git a/include/linux/libata.h b/include/linux/libata.h
index b064bfeb69ee..37ee881c42ac 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -350,7 +350,8 @@ enum {
350 ATAPI_READ = 0, /* READs */ 350 ATAPI_READ = 0, /* READs */
351 ATAPI_WRITE = 1, /* WRITEs */ 351 ATAPI_WRITE = 1, /* WRITEs */
352 ATAPI_READ_CD = 2, /* READ CD [MSF] */ 352 ATAPI_READ_CD = 2, /* READ CD [MSF] */
353 ATAPI_MISC = 3, /* the rest */ 353 ATAPI_PASS_THRU = 3, /* SAT pass-thru */
354 ATAPI_MISC = 4, /* the rest */
354}; 355};
355 356
356enum ata_xfer_mask { 357enum ata_xfer_mask {
@@ -849,6 +850,7 @@ extern unsigned int ata_dev_try_classify(struct ata_device *dev, int present,
849 */ 850 */
850extern void ata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf); 851extern void ata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf);
851extern void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf); 852extern void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf);
853extern int atapi_cmd_type(u8 opcode);
852extern void ata_tf_to_fis(const struct ata_taskfile *tf, 854extern void ata_tf_to_fis(const struct ata_taskfile *tf,
853 u8 pmp, int is_cmd, u8 *fis); 855 u8 pmp, int is_cmd, u8 *fis);
854extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf); 856extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf);
@@ -1379,27 +1381,6 @@ static inline int ata_try_flush_cache(const struct ata_device *dev)
1379 ata_id_has_flush_ext(dev->id); 1381 ata_id_has_flush_ext(dev->id);
1380} 1382}
1381 1383
1382static inline int atapi_cmd_type(u8 opcode)
1383{
1384 switch (opcode) {
1385 case GPCMD_READ_10:
1386 case GPCMD_READ_12:
1387 return ATAPI_READ;
1388
1389 case GPCMD_WRITE_10:
1390 case GPCMD_WRITE_12:
1391 case GPCMD_WRITE_AND_VERIFY_10:
1392 return ATAPI_WRITE;
1393
1394 case GPCMD_READ_CD:
1395 case GPCMD_READ_CD_MSF:
1396 return ATAPI_READ_CD;
1397
1398 default:
1399 return ATAPI_MISC;
1400 }
1401}
1402
1403static inline unsigned int ac_err_mask(u8 status) 1384static inline unsigned int ac_err_mask(u8 status)
1404{ 1385{
1405 if (status & (ATA_BUSY | ATA_DRQ)) 1386 if (status & (ATA_BUSY | ATA_DRQ))
diff --git a/include/linux/linkage.h b/include/linux/linkage.h
index 0592936344c4..2119610b24f8 100644
--- a/include/linux/linkage.h
+++ b/include/linux/linkage.h
@@ -17,8 +17,24 @@
17# define asmregparm 17# define asmregparm
18#endif 18#endif
19 19
20#ifndef prevent_tail_call 20/*
21# define prevent_tail_call(ret) do { } while (0) 21 * This is used by architectures to keep arguments on the stack
22 * untouched by the compiler by keeping them live until the end.
23 * The argument stack may be owned by the assembly-language
24 * caller, not the callee, and gcc doesn't always understand
25 * that.
26 *
27 * We have the return value, and a maximum of six arguments.
28 *
29 * This should always be followed by a "return ret" for the
30 * protection to work (ie no more work that the compiler might
31 * end up needing stack temporaries for).
32 */
33/* Assembly files may be compiled with -traditional .. */
34#ifndef __ASSEMBLY__
35#ifndef asmlinkage_protect
36# define asmlinkage_protect(n, ret, args...) do { } while (0)
37#endif
22#endif 38#endif
23 39
24#ifndef __ALIGN 40#ifndef __ALIGN
diff --git a/include/linux/mbcache.h b/include/linux/mbcache.h
index 99e044b4efc6..a09b84e4fdb4 100644
--- a/include/linux/mbcache.h
+++ b/include/linux/mbcache.h
@@ -34,7 +34,7 @@ void mb_cache_destroy(struct mb_cache *);
34 34
35/* Functions on cache entries */ 35/* Functions on cache entries */
36 36
37struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *); 37struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *, gfp_t);
38int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *, 38int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *,
39 sector_t, unsigned int[]); 39 sector_t, unsigned int[]);
40void mb_cache_entry_release(struct mb_cache_entry *); 40void mb_cache_entry_release(struct mb_cache_entry *);
diff --git a/include/linux/pnp.h b/include/linux/pnp.h
index 29dd55838e84..b2f05c230f4b 100644
--- a/include/linux/pnp.h
+++ b/include/linux/pnp.h
@@ -175,7 +175,7 @@ static inline void pnp_set_card_drvdata(struct pnp_card_link *pcard, void *data)
175struct pnp_dev { 175struct pnp_dev {
176 struct device dev; /* Driver Model device interface */ 176 struct device dev; /* Driver Model device interface */
177 u64 dma_mask; 177 u64 dma_mask;
178 unsigned char number; /* used as an index, must be unique */ 178 unsigned int number; /* used as an index, must be unique */
179 int status; 179 int status;
180 180
181 struct list_head global_list; /* node in global list of devices */ 181 struct list_head global_list; /* node in global list of devices */
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h
index 576a5f77d3bd..1129ee0a7180 100644
--- a/include/linux/spinlock.h
+++ b/include/linux/spinlock.h
@@ -341,6 +341,9 @@ static inline void double_spin_unlock(spinlock_t *l1, spinlock_t *l2,
341 * atomic_dec_and_lock - lock on reaching reference count zero 341 * atomic_dec_and_lock - lock on reaching reference count zero
342 * @atomic: the atomic counter 342 * @atomic: the atomic counter
343 * @lock: the spinlock in question 343 * @lock: the spinlock in question
344 *
345 * Decrements @atomic by 1. If the result is 0, returns true and locks
346 * @lock. Returns false for all other cases.
344 */ 347 */
345extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); 348extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock);
346#define atomic_dec_and_lock(atomic, lock) \ 349#define atomic_dec_and_lock(atomic, lock) \
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h
index 9f95afd0e9e3..50dfd0dc4093 100644
--- a/include/linux/ssb/ssb.h
+++ b/include/linux/ssb/ssb.h
@@ -137,6 +137,10 @@ struct ssb_device {
137 const struct ssb_bus_ops *ops; 137 const struct ssb_bus_ops *ops;
138 138
139 struct device *dev; 139 struct device *dev;
140 /* Pointer to the device that has to be used for
141 * any DMA related operation. */
142 struct device *dma_dev;
143
140 struct ssb_bus *bus; 144 struct ssb_bus *bus;
141 struct ssb_device_id id; 145 struct ssb_device_id id;
142 146
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 818ca1cf0b6d..90c1c191ea69 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -50,7 +50,7 @@ struct thermal_cooling_device_ops {
50}; 50};
51 51
52#define THERMAL_TRIPS_NONE -1 52#define THERMAL_TRIPS_NONE -1
53#define THERMAL_MAX_TRIPS 10 53#define THERMAL_MAX_TRIPS 12
54#define THERMAL_NAME_LENGTH 20 54#define THERMAL_NAME_LENGTH 20
55struct thermal_cooling_device { 55struct thermal_cooling_device {
56 int id; 56 int id;
diff --git a/include/linux/virtio.h b/include/linux/virtio.h
index 12c18ac1b973..e7d10845b3c1 100644
--- a/include/linux/virtio.h
+++ b/include/linux/virtio.h
@@ -41,6 +41,8 @@ struct virtqueue
41 * Returns NULL or the "data" token handed to add_buf. 41 * Returns NULL or the "data" token handed to add_buf.
42 * @disable_cb: disable callbacks 42 * @disable_cb: disable callbacks
43 * vq: the struct virtqueue we're talking about. 43 * vq: the struct virtqueue we're talking about.
44 * Note that this is not necessarily synchronous, hence unreliable and only
45 * useful as an optimization.
44 * @enable_cb: restart callbacks after disable_cb. 46 * @enable_cb: restart callbacks after disable_cb.
45 * vq: the struct virtqueue we're talking about. 47 * vq: the struct virtqueue we're talking about.
46 * This re-enables callbacks; it returns "false" if there are pending 48 * This re-enables callbacks; it returns "false" if there are pending
@@ -48,7 +50,8 @@ struct virtqueue
48 * checking for more work, and enabling callbacks. 50 * checking for more work, and enabling callbacks.
49 * 51 *
50 * Locking rules are straightforward: the driver is responsible for 52 * Locking rules are straightforward: the driver is responsible for
51 * locking. No two operations may be invoked simultaneously. 53 * locking. No two operations may be invoked simultaneously, with the exception
54 * of @disable_cb.
52 * 55 *
53 * All operations can be called in any context. 56 * All operations can be called in any context.
54 */ 57 */