diff options
author | Len Brown <len.brown@intel.com> | 2004-08-02 06:08:40 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2004-08-02 06:08:40 -0400 |
commit | ec3b036720858caae7951be6d5dfa70e3071eb8b (patch) | |
tree | f5516210ff25363865d804c3eaf478085e0f9922 /include | |
parent | 023a2af5c04653827d36d4c9892e029cd83914cf (diff) | |
parent | 81fd00e2e58911325c794b6f98d683ecb7db2b04 (diff) | |
download | history-ec3b036720858caae7951be6d5dfa70e3071eb8b.tar.gz |
Merge intel.com:/home/lenb/bk/linux-2.6.8
into intel.com:/home/lenb/src/linux-acpi-test-2.6.8
Diffstat (limited to 'include')
30 files changed, 188 insertions, 93 deletions
diff --git a/include/asm-arm/cacheflush.h b/include/asm-arm/cacheflush.h index 048ed44dbce72f..84d875206dad8b 100644 --- a/include/asm-arm/cacheflush.h +++ b/include/asm-arm/cacheflush.h @@ -97,7 +97,7 @@ * Start addresses are inclusive and end addresses are exclusive; * start addresses should be rounded down, end addresses up. * - * See linux/Documentation/cachetlb.txt for more information. + * See Documentation/cachetlb.txt for more information. * Please note that the implementation of these, and the required * effects are cache-type (VIVT/VIPT/PIPT) specific. * diff --git a/include/asm-arm/io.h b/include/asm-arm/io.h index 9d7b1be3ad0f36..93aa555cfa05ea 100644 --- a/include/asm-arm/io.h +++ b/include/asm-arm/io.h @@ -263,7 +263,7 @@ out: * ioremap and friends. * * ioremap takes a PCI memory address, as specified in - * linux/Documentation/IO-mapping.txt. + * Documentation/IO-mapping.txt. */ extern void * __ioremap(unsigned long, size_t, unsigned long, unsigned long); extern void __iounmap(void *addr); diff --git a/include/asm-arm/setup.h b/include/asm-arm/setup.h index dc58da851edd8e..ac311c56e202ba 100644 --- a/include/asm-arm/setup.h +++ b/include/asm-arm/setup.h @@ -8,7 +8,7 @@ * published by the Free Software Foundation. * * Structure passed to kernel to tell it about the - * hardware it's running on. See linux/Documentation/arm/Setup + * hardware it's running on. See Documentation/arm/Setup * for more info. */ #ifndef __ASMARM_SETUP_H diff --git a/include/asm-arm26/io.h b/include/asm-arm26/io.h index d9885d087b44bc..b1f1812822c7f9 100644 --- a/include/asm-arm26/io.h +++ b/include/asm-arm26/io.h @@ -386,7 +386,7 @@ extern void _memset_io(unsigned long, int, size_t); * ioremap and friends. * * ioremap takes a PCI memory address, as specified in - * linux/Documentation/IO-mapping.txt. + * Documentation/IO-mapping.txt. */ extern void * __ioremap(unsigned long, size_t, unsigned long, unsigned long); extern void __iounmap(void *addr); diff --git a/include/asm-arm26/setup.h b/include/asm-arm26/setup.h index 1e100271166568..387c3c6b2d6d35 100644 --- a/include/asm-arm26/setup.h +++ b/include/asm-arm26/setup.h @@ -8,7 +8,7 @@ * published by the Free Software Foundation. * * Structure passed to kernel to tell it about the - * hardware it's running on. See linux/Documentation/arm/Setup + * hardware it's running on. See Documentation/arm/Setup * for more info. */ #ifndef __ASMARM_SETUP_H diff --git a/include/asm-i386/io_apic.h b/include/asm-i386/io_apic.h index 37b969fe7f133f..a387a7f9845989 100644 --- a/include/asm-i386/io_apic.h +++ b/include/asm-i386/io_apic.h @@ -13,7 +13,7 @@ #ifdef CONFIG_X86_IO_APIC -#ifdef CONFIG_PCI_USE_VECTOR +#ifdef CONFIG_PCI_MSI static inline int use_pci_vector(void) {return 1;} static inline void disable_edge_ioapic_vector(unsigned int vector) { } static inline void mask_and_ack_level_ioapic_vector(unsigned int vector) { } diff --git a/include/asm-i386/mach-default/irq_vectors_limits.h b/include/asm-i386/mach-default/irq_vectors_limits.h index 78c30cbcede447..b330026e6f7ff2 100644 --- a/include/asm-i386/mach-default/irq_vectors_limits.h +++ b/include/asm-i386/mach-default/irq_vectors_limits.h @@ -1,7 +1,7 @@ #ifndef _ASM_IRQ_VECTORS_LIMITS_H #define _ASM_IRQ_VECTORS_LIMITS_H -#ifdef CONFIG_PCI_USE_VECTOR +#ifdef CONFIG_PCI_MSI #define NR_IRQS FIRST_SYSTEM_VECTOR #define NR_IRQ_VECTORS NR_IRQS #else diff --git a/include/asm-i386/unistd.h b/include/asm-i386/unistd.h index 0df3f9b0a2ff42..ef936b8614045e 100644 --- a/include/asm-i386/unistd.h +++ b/include/asm-i386/unistd.h @@ -425,15 +425,7 @@ __syscall_return(type,__res); \ * won't be any messing with the stack from main(), but we define * some others too. */ -static inline _syscall0(pid_t,setsid) -static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count) -static inline _syscall3(int,read,int,fd,char *,buf,off_t,count) -static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count) -static inline _syscall1(int,dup,int,fd) static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) -static inline _syscall3(int,open,const char *,file,int,flag,int,mode) -static inline _syscall1(int,close,int,fd) -static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) asmlinkage int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount); asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, diff --git a/include/asm-ppc/cputable.h b/include/asm-ppc/cputable.h index 4c07a0cac979c5..fcdb87db389bcd 100644 --- a/include/asm-ppc/cputable.h +++ b/include/asm-ppc/cputable.h @@ -76,6 +76,7 @@ extern struct cpu_spec *cur_cpu_spec[]; #define CPU_FTR_NO_DPM 0x00008000 #define CPU_FTR_HAS_HIGH_BATS 0x00010000 #define CPU_FTR_NEED_COHERENT 0x00020000 +#define CPU_FTR_NO_BTIC 0x00040000 #ifdef __ASSEMBLY__ diff --git a/include/asm-ppc/irq.h b/include/asm-ppc/irq.h index 12362026045ff4..54dddea8388f5b 100644 --- a/include/asm-ppc/irq.h +++ b/include/asm-ppc/irq.h @@ -153,6 +153,79 @@ static __inline__ int irq_canonicalize(int irq) return irq; } +#elif defined(CONFIG_CPM2) && defined(CONFIG_85xx) +/* Now include the board configuration specific associations. +*/ +#include <asm/mpc85xx.h> + +/* The MPC8560 openpic has 32 internal interrupts and 12 external + * interrupts. + * + * We are "flattening" the interrupt vectors of the cascaded CPM + * so that we can uniquely identify any interrupt source with a + * single integer. + */ +#define NR_CPM_INTS 64 +#define NR_EPIC_INTS 44 +#ifndef NR_8259_INTS +#define NR_8259_INTS 0 +#endif +#define NUM_8259_INTERRUPTS NR_8259_INTS + +#ifndef CPM_IRQ_OFFSET +#define CPM_IRQ_OFFSET 0 +#endif + +#define NR_IRQS (NR_EPIC_INTS + NR_CPM_INTS + NR_8259_INTS) + +/* These values must be zero-based and map 1:1 with the EPIC configuration. + * They are used throughout the 8560 I/O subsystem to generate + * interrupt masks, flags, and other control patterns. This is why the + * current kernel assumption of the 8259 as the base controller is such + * a pain in the butt. + */ + +#define SIU_INT_ERROR ((uint)0x00+CPM_IRQ_OFFSET) +#define SIU_INT_I2C ((uint)0x01+CPM_IRQ_OFFSET) +#define SIU_INT_SPI ((uint)0x02+CPM_IRQ_OFFSET) +#define SIU_INT_RISC ((uint)0x03+CPM_IRQ_OFFSET) +#define SIU_INT_SMC1 ((uint)0x04+CPM_IRQ_OFFSET) +#define SIU_INT_SMC2 ((uint)0x05+CPM_IRQ_OFFSET) +#define SIU_INT_TIMER1 ((uint)0x0c+CPM_IRQ_OFFSET) +#define SIU_INT_TIMER2 ((uint)0x0d+CPM_IRQ_OFFSET) +#define SIU_INT_TIMER3 ((uint)0x0e+CPM_IRQ_OFFSET) +#define SIU_INT_TIMER4 ((uint)0x0f+CPM_IRQ_OFFSET) +#define SIU_INT_FCC1 ((uint)0x20+CPM_IRQ_OFFSET) +#define SIU_INT_FCC2 ((uint)0x21+CPM_IRQ_OFFSET) +#define SIU_INT_FCC3 ((uint)0x22+CPM_IRQ_OFFSET) +#define SIU_INT_MCC1 ((uint)0x24+CPM_IRQ_OFFSET) +#define SIU_INT_MCC2 ((uint)0x25+CPM_IRQ_OFFSET) +#define SIU_INT_SCC1 ((uint)0x28+CPM_IRQ_OFFSET) +#define SIU_INT_SCC2 ((uint)0x29+CPM_IRQ_OFFSET) +#define SIU_INT_SCC3 ((uint)0x2a+CPM_IRQ_OFFSET) +#define SIU_INT_SCC4 ((uint)0x2b+CPM_IRQ_OFFSET) +#define SIU_INT_PC15 ((uint)0x30+CPM_IRQ_OFFSET) +#define SIU_INT_PC14 ((uint)0x31+CPM_IRQ_OFFSET) +#define SIU_INT_PC13 ((uint)0x32+CPM_IRQ_OFFSET) +#define SIU_INT_PC12 ((uint)0x33+CPM_IRQ_OFFSET) +#define SIU_INT_PC11 ((uint)0x34+CPM_IRQ_OFFSET) +#define SIU_INT_PC10 ((uint)0x35+CPM_IRQ_OFFSET) +#define SIU_INT_PC9 ((uint)0x36+CPM_IRQ_OFFSET) +#define SIU_INT_PC8 ((uint)0x37+CPM_IRQ_OFFSET) +#define SIU_INT_PC7 ((uint)0x38+CPM_IRQ_OFFSET) +#define SIU_INT_PC6 ((uint)0x39+CPM_IRQ_OFFSET) +#define SIU_INT_PC5 ((uint)0x3a+CPM_IRQ_OFFSET) +#define SIU_INT_PC4 ((uint)0x3b+CPM_IRQ_OFFSET) +#define SIU_INT_PC3 ((uint)0x3c+CPM_IRQ_OFFSET) +#define SIU_INT_PC2 ((uint)0x3d+CPM_IRQ_OFFSET) +#define SIU_INT_PC1 ((uint)0x3e+CPM_IRQ_OFFSET) +#define SIU_INT_PC0 ((uint)0x3f+CPM_IRQ_OFFSET) + +static __inline__ int irq_canonicalize(int irq) +{ + return irq; +} + #else /* CONFIG_40x + CONFIG_8xx */ /* * this is the # irq's for all ppc arch's (pmac/chrp/prep) diff --git a/include/asm-ppc/mpc85xx.h b/include/asm-ppc/mpc85xx.h index aab7cb76aefa12..d3be2353890e25 100644 --- a/include/asm-ppc/mpc85xx.h +++ b/include/asm-ppc/mpc85xx.h @@ -25,13 +25,23 @@ #ifdef CONFIG_MPC8540_ADS #include <platforms/85xx/mpc8540_ads.h> #endif +#ifdef CONFIG_MPC8555_CDS +#include <platforms/85xx/mpc8555_cds.h> +#endif +#ifdef CONFIG_MPC8560_ADS +#include <platforms/85xx/mpc8560_ads.h> +#endif #ifdef CONFIG_SBC8560 #include <platforms/85xx/sbc8560.h> #endif #define _IO_BASE isa_io_base #define _ISA_MEM_BASE isa_mem_base +#ifdef CONFIG_PCI #define PCI_DRAM_OFFSET pci_dram_offset +#else +#define PCI_DRAM_OFFSET 0 +#endif /* * The "residual" board information structure the boot loader passes diff --git a/include/asm-ppc64/mmu.h b/include/asm-ppc64/mmu.h index 54a1466fe10458..3b66f32b6cc8c0 100644 --- a/include/asm-ppc64/mmu.h +++ b/include/asm-ppc64/mmu.h @@ -37,12 +37,6 @@ typedef struct { mm_context_t ctx = { .id = REGION_ID(ea), KERNEL_LOW_HPAGES}; \ ctx; }) -/* - * Hardware Segment Lookaside Buffer Entry - * This structure has been padded out to two 64b doublewords (actual SLBE's are - * 94 bits). This padding facilites use by the segment management - * instructions. - */ typedef struct { unsigned long esid: 36; /* Effective segment ID */ unsigned long resv0:20; /* Reserved */ @@ -71,35 +65,6 @@ typedef struct _STE { } dw1; } STE; -typedef struct { - unsigned long esid: 36; /* Effective segment ID */ - unsigned long v: 1; /* Entry valid (v=1) or invalid */ - unsigned long null1:15; /* padding to a 64b boundary */ - unsigned long index:12; /* Index to select SLB entry. Used by slbmte */ -} slb_dword0; - -typedef struct { - unsigned long vsid: 52; /* Virtual segment ID */ - unsigned long ks: 1; /* Supervisor (privileged) state storage key */ - unsigned long kp: 1; /* Problem state storage key */ - unsigned long n: 1; /* No-execute if n=1 */ - unsigned long l: 1; /* Virt pages are large (l=1) or 4KB (l=0) */ - unsigned long c: 1; /* Class */ - unsigned long resv0: 7; /* Padding to a 64b boundary */ -} slb_dword1; - -typedef struct { - union { - unsigned long dword0; - slb_dword0 dw0; - } dw0; - - union { - unsigned long dword1; - slb_dword1 dw1; - } dw1; -} SLBE; - /* Hardware Page Table Entry */ #define HPTES_PER_GROUP 8 @@ -259,6 +224,30 @@ extern void htab_finish_init(void); #define STAB0_PHYS_ADDR (STAB0_PAGE<<PAGE_SHIFT) #define STAB0_VIRT_ADDR (KERNELBASE+STAB0_PHYS_ADDR) +#define SLB_NUM_BOLTED 2 +#define SLB_CACHE_ENTRIES 8 + +/* Bits in the SLB ESID word */ +#define SLB_ESID_V 0x0000000008000000 /* entry is valid */ + +/* Bits in the SLB VSID word */ +#define SLB_VSID_SHIFT 12 +#define SLB_VSID_KS 0x0000000000000800 +#define SLB_VSID_KP 0x0000000000000400 +#define SLB_VSID_N 0x0000000000000200 /* no-execute */ +#define SLB_VSID_L 0x0000000000000100 /* largepage (4M) */ +#define SLB_VSID_C 0x0000000000000080 /* class */ + +#define SLB_VSID_KERNEL (SLB_VSID_KP|SLB_VSID_C) +#define SLB_VSID_USER (SLB_VSID_KP|SLB_VSID_KS) + +#define VSID_RANDOMIZER ASM_CONST(42470972311) +#define VSID_MASK 0xfffffffffUL +/* Because we never access addresses below KERNELBASE as kernel + * addresses, this VSID is never used for anything real, and will + * never have pages hashed into it */ +#define BAD_VSID ASM_CONST(0) + /* Block size masks */ #define BL_128K 0x000 #define BL_256K 0x001 diff --git a/include/asm-ppc64/mmu_context.h b/include/asm-ppc64/mmu_context.h index 505ad13b358ef0..03561b5895d73f 100644 --- a/include/asm-ppc64/mmu_context.h +++ b/include/asm-ppc64/mmu_context.h @@ -136,7 +136,7 @@ destroy_context(struct mm_struct *mm) } extern void flush_stab(struct task_struct *tsk, struct mm_struct *mm); -extern void flush_slb(struct task_struct *tsk, struct mm_struct *mm); +extern void switch_slb(struct task_struct *tsk, struct mm_struct *mm); /* * switch_mm is the entry point called from the architecture independent @@ -161,7 +161,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, return; if (cur_cpu_spec->cpu_features & CPU_FTR_SLB) - flush_slb(tsk, next); + switch_slb(tsk, next); else flush_stab(tsk, next); } @@ -181,10 +181,6 @@ static inline void activate_mm(struct mm_struct *prev, struct mm_struct *next) local_irq_restore(flags); } -#define VSID_RANDOMIZER 42470972311UL -#define VSID_MASK 0xfffffffffUL - - /* This is only valid for kernel (including vmalloc, imalloc and bolted) EA's */ static inline unsigned long diff --git a/include/asm-ppc64/paca.h b/include/asm-ppc64/paca.h index 0eab9114c2255e..851082cd25b978 100644 --- a/include/asm-ppc64/paca.h +++ b/include/asm-ppc64/paca.h @@ -78,20 +78,26 @@ struct paca_struct { u64 exmc[8]; /* used for machine checks */ u64 exslb[8]; /* used for SLB/segment table misses * on the linear mapping */ - u64 exdsi[8]; /* used for linear mapping hash table misses */ + u64 slb_r3; /* spot to save R3 on SLB miss */ + mm_context_t context; + u16 slb_cache[SLB_CACHE_ENTRIES]; + u16 slb_cache_ptr; /* * then miscellaneous read-write fields */ struct task_struct *__current; /* Pointer to current */ u64 kstack; /* Saved Kernel stack addr */ - u64 stab_next_rr; /* stab/slb round-robin counter */ + u64 stab_rr; /* stab/slb round-robin counter */ u64 next_jiffy_update_tb; /* TB value for next jiffy update */ u64 saved_r1; /* r1 save for RTAS calls */ u64 saved_msr; /* MSR saved here by enter_rtas */ u32 lpevent_count; /* lpevents processed */ u8 proc_enabled; /* irq soft-enable flag */ + /* not yet used */ + u64 exdsi[8]; /* used for linear mapping hash table misses */ + /* * iSeries structues which the hypervisor knows about - Not * sure if these particularly need to be cacheline aligned. diff --git a/include/asm-ppc64/page.h b/include/asm-ppc64/page.h index b144b14dc7242a..a30e2a97bee16e 100644 --- a/include/asm-ppc64/page.h +++ b/include/asm-ppc64/page.h @@ -27,6 +27,7 @@ #define SID_SHIFT 28 #define SID_MASK 0xfffffffffUL +#define ESID_MASK 0xfffffffff0000000UL #define GET_ESID(x) (((x) >> SID_SHIFT) & SID_MASK) #ifdef CONFIG_HUGETLB_PAGE @@ -37,8 +38,8 @@ #define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) /* For 64-bit processes the hugepage range is 1T-1.5T */ -#define TASK_HPAGE_BASE (0x0000010000000000UL) -#define TASK_HPAGE_END (0x0000018000000000UL) +#define TASK_HPAGE_BASE ASM_CONST(0x0000010000000000) +#define TASK_HPAGE_END ASM_CONST(0x0000018000000000) #define LOW_ESID_MASK(addr, len) (((1U << (GET_ESID(addr+len-1)+1)) \ - (1U << GET_ESID(addr))) & 0xffff) diff --git a/include/asm-ppc64/pci-bridge.h b/include/asm-ppc64/pci-bridge.h index 08ba3f2b89bae4..acb6aff2ada950 100644 --- a/include/asm-ppc64/pci-bridge.h +++ b/include/asm-ppc64/pci-bridge.h @@ -47,7 +47,6 @@ struct pci_controller { * the PCI memory space in the CPU bus space */ unsigned long pci_mem_offset; - unsigned long pci_io_offset; struct pci_ops *ops; volatile unsigned int *cfg_addr; diff --git a/include/asm-x86_64/io_apic.h b/include/asm-x86_64/io_apic.h index 5f31a27b090215..288296121af104 100644 --- a/include/asm-x86_64/io_apic.h +++ b/include/asm-x86_64/io_apic.h @@ -13,7 +13,7 @@ #ifdef CONFIG_X86_IO_APIC -#ifdef CONFIG_PCI_USE_VECTOR +#ifdef CONFIG_PCI_MSI static inline int use_pci_vector(void) {return 1;} static inline void disable_edge_ioapic_vector(unsigned int vector) { } static inline void mask_and_ack_level_ioapic_vector(unsigned int vector) { } diff --git a/include/asm-x86_64/irq.h b/include/asm-x86_64/irq.h index 37c9fd65c97fbd..34bd00bfc64c9e 100644 --- a/include/asm-x86_64/irq.h +++ b/include/asm-x86_64/irq.h @@ -31,7 +31,7 @@ #define FIRST_SYSTEM_VECTOR 0xef /* duplicated in hw_irq.h */ -#ifdef CONFIG_PCI_USE_VECTOR +#ifdef CONFIG_PCI_MSI #define NR_IRQS FIRST_SYSTEM_VECTOR #define NR_IRQ_VECTORS NR_IRQS #else diff --git a/include/linux/acct.h b/include/linux/acct.h index 6c2bd56773f00e..b46ce1ac1c6a3e 100644 --- a/include/linux/acct.h +++ b/include/linux/acct.h @@ -17,6 +17,7 @@ #include <linux/types.h> #include <asm/param.h> +#include <asm/byteorder.h> /* * comp_t is a 16-bit "floating" point number with a 3-bit base 8 @@ -104,7 +105,12 @@ struct acct_v3 #define ACOMPAT 0x04 /* ... used compatibility mode (VAX only not used) */ #define ACORE 0x08 /* ... dumped core */ #define AXSIG 0x10 /* ... was killed by a signal */ -#define ABYTESEX 0x80 /* always set, allows to detect byteorder */ + +#ifdef __BIG_ENDIAN +#define ACCT_BYTEORDER 0x80 /* accounting file is big endian */ +#else +#define ACCT_BYTEORDER 0x00 /* accounting file is little endian */ +#endif #ifdef __KERNEL__ diff --git a/include/linux/list.h b/include/linux/list.h index 92127ae0e995fd..33b863bcb7b9a0 100644 --- a/include/linux/list.h +++ b/include/linux/list.h @@ -677,6 +677,24 @@ static inline void hlist_add_after(struct hlist_node *n, pos && ({ n = pos->next; 1; }) && \ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ pos = n) + +/** + * hlist_for_each_entry_rcu - iterate over rcu list of given type + * @pos: the type * to use as a loop counter. + * @pos: the &struct hlist_node to use as a loop counter. + * @head: the head for your list. + * @member: the name of the hlist_node within the struct. + * + * This list-traversal primitive may safely run concurrently with + * the _rcu list-mutation primitives such as hlist_add_rcu() + * as long as the traversal is guarded by rcu_read_lock(). + */ +#define hlist_for_each_entry_rcu(tpos, pos, head, member) \ + for (pos = (head)->first; \ + pos && ({ prefetch(pos->next); 1;}) && \ + ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ + pos = pos->next, ({ smp_read_barrier_depends(); 0; }) ) + #else #warning "don't include kernel headers in userspace" #endif /* __KERNEL__ */ diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index e9375f3ad5c417..53c73157ed749c 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -472,12 +472,6 @@ struct net_device /* bridge stuff */ struct net_bridge_port *br_port; -#ifdef CONFIG_NET_FASTROUTE -#define NETDEV_FASTROUTE_HMASK 0xF - /* Semi-private data. Keep it at the end of device struct. */ - rwlock_t fastpath_lock; - struct dst_entry *fastpath[NETDEV_FASTROUTE_HMASK+1]; -#endif #ifdef CONFIG_NET_DIVERT /* this will get initialized at each interface type init routine */ struct divert_blk *divert; @@ -947,11 +941,6 @@ extern unsigned long netdev_fc_xoff; extern atomic_t netdev_dropping; extern int netdev_set_master(struct net_device *dev, struct net_device *master); extern int skb_checksum_help(struct sk_buff **pskb, int inward); -#ifdef CONFIG_NET_FASTROUTE -extern int netdev_fastroute; -extern int netdev_fastroute_obstacles; -extern void dev_clear_fastroute(struct net_device *dev); -#endif #ifdef CONFIG_SYSCTL extern char *net_sysctl_strdup(const char *s); diff --git a/include/linux/pci.h b/include/linux/pci.h index abfb688bde5fb2..2ce5f957c07208 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -831,16 +831,27 @@ int pci_scan_bridge(struct pci_bus *bus, struct pci_dev * dev, int max, int pass extern struct pci_dev *isa_bridge; #endif -#ifndef CONFIG_PCI_USE_VECTOR +struct msix_entry { + u16 vector; /* kernel uses to write allocated vector */ + u16 entry; /* driver uses to specify entry, OS writes */ +}; + +#ifndef CONFIG_PCI_MSI static inline void pci_scan_msi_device(struct pci_dev *dev) {} static inline int pci_enable_msi(struct pci_dev *dev) {return -1;} +static inline void pci_disable_msi(struct pci_dev *dev) {} +static inline int pci_enable_msix(struct pci_dev* dev, + struct msix_entry *entries, int nvec) {return -1;} +static inline void pci_disable_msix(struct pci_dev *dev) {} static inline void msi_remove_pci_irq_vectors(struct pci_dev *dev) {} #else extern void pci_scan_msi_device(struct pci_dev *dev); extern int pci_enable_msi(struct pci_dev *dev); +extern void pci_disable_msi(struct pci_dev *dev); +extern int pci_enable_msix(struct pci_dev* dev, + struct msix_entry *entries, int nvec); +extern void pci_disable_msix(struct pci_dev *dev); extern void msi_remove_pci_irq_vectors(struct pci_dev *dev); -extern int msi_alloc_vectors(struct pci_dev* dev, int *vector, int nvec); -extern int msi_free_vectors(struct pci_dev* dev, int *vector, int nvec); #endif #endif /* CONFIG_PCI */ diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 237a53e2224f37..50a747035c0515 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -1184,6 +1184,7 @@ #define PCI_DEVICE_ID_TTI_HPT302 0x0006 #define PCI_DEVICE_ID_TTI_HPT371 0x0007 #define PCI_DEVICE_ID_TTI_HPT374 0x0008 +#define PCI_DEVICE_ID_TTI_HPT372N 0x0009 // apparently a 372N variant? #define PCI_VENDOR_ID_VIA 0x1106 #define PCI_DEVICE_ID_VIA_8763_0 0x0198 diff --git a/include/linux/pkt_cls.h b/include/linux/pkt_cls.h index 60dd7903284e22..9abc5b5a925cab 100644 --- a/include/linux/pkt_cls.h +++ b/include/linux/pkt_cls.h @@ -117,8 +117,6 @@ enum struct tc_police { __u32 index; - int refcnt; - int bindcnt; int action; #define TC_POLICE_UNSPEC TC_ACT_UNSPEC #define TC_POLICE_OK TC_ACT_OK @@ -131,6 +129,9 @@ struct tc_police __u32 mtu; struct tc_ratespec rate; struct tc_ratespec peakrate; + int refcnt; + int bindcnt; + __u32 capab; }; struct tcf_t @@ -188,6 +189,7 @@ enum TCA_U32_POLICE, TCA_U32_ACT, TCA_U32_INDEV, + TCA_U32_PCNT, __TCA_U32_MAX }; @@ -199,7 +201,6 @@ struct tc_u32_key __u32 val; int off; int offmask; - __u32 kcnt; }; struct tc_u32_sel @@ -215,10 +216,16 @@ struct tc_u32_sel short hoff; __u32 hmask; struct tc_u32_key keys[0]; - unsigned long rcnt; - unsigned long rhit; }; +#ifdef CONFIG_CLS_U32_PERF +struct tc_u32_pcnt +{ + __u64 rcnt; + __u64 rhit; + __u64 kcnts[0]; +}; +#endif /* Flags */ #define TC_U32_TERMINAL 1 @@ -283,8 +290,8 @@ enum TCA_FW_UNSPEC, TCA_FW_CLASSID, TCA_FW_POLICE, - TCA_FW_INDEV, - TCA_FW_ACT, + TCA_FW_INDEV, /* used by CONFIG_NET_CLS_IND */ + TCA_FW_ACT, /* used by CONFIG_NET_CLS_ACT */ __TCA_FW_MAX }; diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 3d0ba45fa88d25..11f514844817d0 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -233,7 +233,7 @@ struct sk_buff { * want to keep them across layers you have to do a skb_clone() * first. This is owned by whoever has the skb queued ATM. */ - char cb[48]; + char cb[40]; unsigned int len, data_len, diff --git a/include/linux/swap.h b/include/linux/swap.h index b9edc335a56304..b081066b5f1139 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -148,7 +148,7 @@ struct swap_list_t { #define vm_swap_full() (nr_swap_pages*2 < total_swap_pages) /* linux/mm/oom_kill.c */ -extern void out_of_memory(void); +extern void out_of_memory(int gfp_mask); /* linux/mm/memory.c */ extern void swapin_readahead(swp_entry_t, unsigned long, struct vm_area_struct *); diff --git a/include/net/irda/irttp.h b/include/net/irda/irttp.h index ef4727f6059bdc..600d5411da1795 100644 --- a/include/net/irda/irttp.h +++ b/include/net/irda/irttp.h @@ -210,6 +210,4 @@ static inline int irttp_is_primary(struct tsap_cb *self) return(irlap_is_primary(self->lsap->lap->irlap)); } -extern struct irttp_cb *irttp; - #endif /* IRTTP_H */ diff --git a/include/net/netrom.h b/include/net/netrom.h index 8168780417d7dc..d968252feddf30 100644 --- a/include/net/netrom.h +++ b/include/net/netrom.h @@ -112,9 +112,6 @@ struct nr_node { * nr_node & nr_neigh lists, refcounting and locking *********************************************************************/ -extern struct hlist_head nr_node_list; -extern struct hlist_head nr_neigh_list; - #define nr_node_hold(__nr_node) \ atomic_inc(&((__nr_node)->refcount)) diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 6bb10bde3fc25b..493b7237f68d4c 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -829,6 +829,7 @@ extern int xfrm6_tunnel_check_size(struct sk_buff *skb); extern u32 xfrm6_tunnel_alloc_spi(xfrm_address_t *saddr); extern void xfrm6_tunnel_free_spi(xfrm_address_t *saddr); extern u32 xfrm6_tunnel_spi_lookup(xfrm_address_t *saddr); +extern int xfrm6_output(struct sk_buff **pskb); #ifdef CONFIG_XFRM extern int xfrm4_rcv_encap(struct sk_buff *skb, __u16 encap_type); diff --git a/include/scsi/sg.h b/include/scsi/sg.h index 01bf5b5385dfc4..c8985dd1d4b2e7 100644 --- a/include/scsi/sg.h +++ b/include/scsi/sg.h @@ -76,7 +76,7 @@ Major new features in SG 3.x driver (cf SG 2.x drivers) http://www.torque.net/sg/p/scsi-generic_long.txt A version of this document (potentially out of date) may also be found in the kernel source tree, probably at: - /usr/src/linux/Documentation/scsi/scsi-generic.txt . + Documentation/scsi/scsi-generic.txt . Utility and test programs are available at the sg web site. They are bundled as sg_utils (for the lk 2.2 series) and sg3_utils (for the |