diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-08-29 17:55:59 -0400 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-08-29 17:55:59 -0400 |
| commit | b01e86fee6c821e4e003fd4e9f65453ac478a58e (patch) | |
| tree | 21695e10cbe7001d2ccc8c87cee5e7a7865b1025 /include | |
| parent | e889173c2c67dc288e9b050ab066cfae151b047e (diff) | |
| parent | 60d4684068ff1eec78f55b5888d0bd2d4cca1520 (diff) | |
Merge /spare/repo/linux-2.6 into upstream
Diffstat (limited to 'include')
29 files changed, 319 insertions, 89 deletions
diff --git a/include/asm-arm/arch-s3c2410/dma.h b/include/asm-arm/arch-s3c2410/dma.h index 72964f9b8414..7463fd5252ce 100644 --- a/include/asm-arm/arch-s3c2410/dma.h +++ b/include/asm-arm/arch-s3c2410/dma.h | |||
| @@ -104,6 +104,7 @@ enum s3c2410_chan_op_e { | |||
| 104 | S3C2410_DMAOP_RESUME, | 104 | S3C2410_DMAOP_RESUME, |
| 105 | S3C2410_DMAOP_FLUSH, | 105 | S3C2410_DMAOP_FLUSH, |
| 106 | S3C2410_DMAOP_TIMEOUT, /* internal signal to handler */ | 106 | S3C2410_DMAOP_TIMEOUT, /* internal signal to handler */ |
| 107 | S3C2410_DMAOP_STARTED, /* indicate channel started */ | ||
| 107 | }; | 108 | }; |
| 108 | 109 | ||
| 109 | typedef enum s3c2410_chan_op_e s3c2410_chan_op_t; | 110 | typedef enum s3c2410_chan_op_e s3c2410_chan_op_t; |
diff --git a/include/asm-arm/arch-s3c2410/regs-rtc.h b/include/asm-arm/arch-s3c2410/regs-rtc.h index 228983f89bc8..0fbec07bb6b8 100644 --- a/include/asm-arm/arch-s3c2410/regs-rtc.h +++ b/include/asm-arm/arch-s3c2410/regs-rtc.h | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | #ifndef __ASM_ARCH_REGS_RTC_H | 18 | #ifndef __ASM_ARCH_REGS_RTC_H |
| 19 | #define __ASM_ARCH_REGS_RTC_H __FILE__ | 19 | #define __ASM_ARCH_REGS_RTC_H __FILE__ |
| 20 | 20 | ||
| 21 | #define S3C2410_RTCREG(x) ((x) + S3C24XX_VA_RTC) | 21 | #define S3C2410_RTCREG(x) (x) |
| 22 | 22 | ||
| 23 | #define S3C2410_RTCCON S3C2410_RTCREG(0x40) | 23 | #define S3C2410_RTCCON S3C2410_RTCREG(0x40) |
| 24 | #define S3C2410_RTCCON_RTCEN (1<<0) | 24 | #define S3C2410_RTCCON_RTCEN (1<<0) |
diff --git a/include/asm-arm/procinfo.h b/include/asm-arm/procinfo.h index edb7b6502fcf..91a31adfa8a8 100644 --- a/include/asm-arm/procinfo.h +++ b/include/asm-arm/procinfo.h | |||
| @@ -55,5 +55,6 @@ extern unsigned int elf_hwcap; | |||
| 55 | #define HWCAP_VFP 64 | 55 | #define HWCAP_VFP 64 |
| 56 | #define HWCAP_EDSP 128 | 56 | #define HWCAP_EDSP 128 |
| 57 | #define HWCAP_JAVA 256 | 57 | #define HWCAP_JAVA 256 |
| 58 | #define HWCAP_IWMMXT 512 | ||
| 58 | 59 | ||
| 59 | #endif | 60 | #endif |
diff --git a/include/asm-i386/mmzone.h b/include/asm-i386/mmzone.h index e33e9f9e4c66..22cb07cc8f32 100644 --- a/include/asm-i386/mmzone.h +++ b/include/asm-i386/mmzone.h | |||
| @@ -14,7 +14,7 @@ extern struct pglist_data *node_data[]; | |||
| 14 | 14 | ||
| 15 | #ifdef CONFIG_X86_NUMAQ | 15 | #ifdef CONFIG_X86_NUMAQ |
| 16 | #include <asm/numaq.h> | 16 | #include <asm/numaq.h> |
| 17 | #else /* summit or generic arch */ | 17 | #elif defined(CONFIG_ACPI_SRAT)/* summit or generic arch */ |
| 18 | #include <asm/srat.h> | 18 | #include <asm/srat.h> |
| 19 | #endif | 19 | #endif |
| 20 | 20 | ||
diff --git a/include/asm-powerpc/pgalloc.h b/include/asm-powerpc/pgalloc.h index 9f0917c68659..ae63db7b3e7d 100644 --- a/include/asm-powerpc/pgalloc.h +++ b/include/asm-powerpc/pgalloc.h | |||
| @@ -117,7 +117,7 @@ static inline void pte_free(struct page *ptepage) | |||
| 117 | pte_free_kernel(page_address(ptepage)); | 117 | pte_free_kernel(page_address(ptepage)); |
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | #define PGF_CACHENUM_MASK 0xf | 120 | #define PGF_CACHENUM_MASK 0x3 |
| 121 | 121 | ||
| 122 | typedef struct pgtable_free { | 122 | typedef struct pgtable_free { |
| 123 | unsigned long val; | 123 | unsigned long val; |
diff --git a/include/asm-powerpc/system.h b/include/asm-powerpc/system.h index 7307aa775671..4c9f5229e833 100644 --- a/include/asm-powerpc/system.h +++ b/include/asm-powerpc/system.h | |||
| @@ -53,6 +53,15 @@ | |||
| 53 | #define smp_read_barrier_depends() do { } while(0) | 53 | #define smp_read_barrier_depends() do { } while(0) |
| 54 | #endif /* CONFIG_SMP */ | 54 | #endif /* CONFIG_SMP */ |
| 55 | 55 | ||
| 56 | /* | ||
| 57 | * This is a barrier which prevents following instructions from being | ||
| 58 | * started until the value of the argument x is known. For example, if | ||
| 59 | * x is a variable loaded from memory, this prevents following | ||
| 60 | * instructions from being executed until the load has been performed. | ||
| 61 | */ | ||
| 62 | #define data_barrier(x) \ | ||
| 63 | asm volatile("twi 0,%0,0; isync" : : "r" (x) : "memory"); | ||
| 64 | |||
| 56 | struct task_struct; | 65 | struct task_struct; |
| 57 | struct pt_regs; | 66 | struct pt_regs; |
| 58 | 67 | ||
diff --git a/include/asm-powerpc/tsi108.h b/include/asm-powerpc/tsi108.h index c4c278d72f71..2c702d35a7cf 100644 --- a/include/asm-powerpc/tsi108.h +++ b/include/asm-powerpc/tsi108.h | |||
| @@ -1,16 +1,18 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * include/asm-ppc/tsi108.h | ||
| 3 | * | ||
| 4 | * common routine and memory layout for Tundra TSI108(Grendel) host bridge | 2 | * common routine and memory layout for Tundra TSI108(Grendel) host bridge |
| 5 | * memory controller. | 3 | * memory controller. |
| 6 | * | 4 | * |
| 7 | * Author: Jacob Pan (jacob.pan@freescale.com) | 5 | * Author: Jacob Pan (jacob.pan@freescale.com) |
| 8 | * Alex Bounine (alexandreb@tundra.com) | 6 | * Alex Bounine (alexandreb@tundra.com) |
| 9 | * 2004 (c) Freescale Semiconductor Inc. This file is licensed under | 7 | * |
| 10 | * the terms of the GNU General Public License version 2. This program | 8 | * Copyright 2004-2006 Freescale Semiconductor, Inc. |
| 11 | * is licensed "as is" without any warranty of any kind, whether express | 9 | * |
| 12 | * or implied. | 10 | * This program is free software; you can redistribute it and/or |
| 11 | * modify it under the terms of the GNU General Public License | ||
| 12 | * as published by the Free Software Foundation; either version | ||
| 13 | * 2 of the License, or (at your option) any later version. | ||
| 13 | */ | 14 | */ |
| 15 | |||
| 14 | #ifndef __PPC_KERNEL_TSI108_H | 16 | #ifndef __PPC_KERNEL_TSI108_H |
| 15 | #define __PPC_KERNEL_TSI108_H | 17 | #define __PPC_KERNEL_TSI108_H |
| 16 | 18 | ||
diff --git a/include/asm-powerpc/tsi108_irq.h b/include/asm-powerpc/tsi108_irq.h new file mode 100644 index 000000000000..3e4d04effa57 --- /dev/null +++ b/include/asm-powerpc/tsi108_irq.h | |||
| @@ -0,0 +1,124 @@ | |||
| 1 | /* | ||
| 2 | * (C) Copyright 2005 Tundra Semiconductor Corp. | ||
| 3 | * Alex Bounine, <alexandreb at tundra.com). | ||
| 4 | * | ||
| 5 | * See file CREDITS for list of people who contributed to this | ||
| 6 | * project. | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or | ||
| 9 | * modify it under the terms of the GNU General Public License as | ||
| 10 | * published by the Free Software Foundation; either version 2 of | ||
| 11 | * the License, or (at your option) any later version. | ||
| 12 | * | ||
| 13 | * This program is distributed in the hope that it will be useful, | ||
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | * GNU General Public License for more details. | ||
| 17 | * | ||
| 18 | * You should have received a copy of the GNU General Public License | ||
| 19 | * along with this program; if not, write to the Free Software | ||
| 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | ||
| 21 | * MA 02111-1307 USA | ||
| 22 | */ | ||
| 23 | |||
| 24 | /* | ||
| 25 | * definitions for interrupt controller initialization and external interrupt | ||
| 26 | * demultiplexing on TSI108EMU/SVB boards. | ||
| 27 | */ | ||
| 28 | |||
| 29 | #ifndef _ASM_PPC_TSI108_IRQ_H | ||
| 30 | #define _ASM_PPC_TSI108_IRQ_H | ||
| 31 | |||
| 32 | /* | ||
| 33 | * Tsi108 interrupts | ||
| 34 | */ | ||
| 35 | #ifndef TSI108_IRQ_REG_BASE | ||
| 36 | #define TSI108_IRQ_REG_BASE 0 | ||
| 37 | #endif | ||
| 38 | |||
| 39 | #define TSI108_IRQ(x) (TSI108_IRQ_REG_BASE + (x)) | ||
| 40 | |||
| 41 | #define TSI108_MAX_VECTORS (36 + 4) /* 36 sources + PCI INT demux */ | ||
| 42 | #define MAX_TASK_PRIO 0xF | ||
| 43 | |||
| 44 | #define TSI108_IRQ_SPURIOUS (TSI108_MAX_VECTORS) | ||
| 45 | |||
| 46 | #define DEFAULT_PRIO_LVL 10 /* initial priority level */ | ||
| 47 | |||
| 48 | /* Interrupt vectors assignment to external and internal | ||
| 49 | * sources of requests. */ | ||
| 50 | |||
| 51 | /* EXTERNAL INTERRUPT SOURCES */ | ||
| 52 | |||
| 53 | #define IRQ_TSI108_EXT_INT0 TSI108_IRQ(0) /* External Source at INT[0] */ | ||
| 54 | #define IRQ_TSI108_EXT_INT1 TSI108_IRQ(1) /* External Source at INT[1] */ | ||
| 55 | #define IRQ_TSI108_EXT_INT2 TSI108_IRQ(2) /* External Source at INT[2] */ | ||
| 56 | #define IRQ_TSI108_EXT_INT3 TSI108_IRQ(3) /* External Source at INT[3] */ | ||
| 57 | |||
| 58 | /* INTERNAL INTERRUPT SOURCES */ | ||
| 59 | |||
| 60 | #define IRQ_TSI108_RESERVED0 TSI108_IRQ(4) /* Reserved IRQ */ | ||
| 61 | #define IRQ_TSI108_RESERVED1 TSI108_IRQ(5) /* Reserved IRQ */ | ||
| 62 | #define IRQ_TSI108_RESERVED2 TSI108_IRQ(6) /* Reserved IRQ */ | ||
| 63 | #define IRQ_TSI108_RESERVED3 TSI108_IRQ(7) /* Reserved IRQ */ | ||
| 64 | #define IRQ_TSI108_DMA0 TSI108_IRQ(8) /* DMA0 */ | ||
| 65 | #define IRQ_TSI108_DMA1 TSI108_IRQ(9) /* DMA1 */ | ||
| 66 | #define IRQ_TSI108_DMA2 TSI108_IRQ(10) /* DMA2 */ | ||
| 67 | #define IRQ_TSI108_DMA3 TSI108_IRQ(11) /* DMA3 */ | ||
| 68 | #define IRQ_TSI108_UART0 TSI108_IRQ(12) /* UART0 */ | ||
| 69 | #define IRQ_TSI108_UART1 TSI108_IRQ(13) /* UART1 */ | ||
| 70 | #define IRQ_TSI108_I2C TSI108_IRQ(14) /* I2C */ | ||
| 71 | #define IRQ_TSI108_GPIO TSI108_IRQ(15) /* GPIO */ | ||
| 72 | #define IRQ_TSI108_GIGE0 TSI108_IRQ(16) /* GIGE0 */ | ||
| 73 | #define IRQ_TSI108_GIGE1 TSI108_IRQ(17) /* GIGE1 */ | ||
| 74 | #define IRQ_TSI108_RESERVED4 TSI108_IRQ(18) /* Reserved IRQ */ | ||
| 75 | #define IRQ_TSI108_HLP TSI108_IRQ(19) /* HLP */ | ||
| 76 | #define IRQ_TSI108_SDRAM TSI108_IRQ(20) /* SDC */ | ||
| 77 | #define IRQ_TSI108_PROC_IF TSI108_IRQ(21) /* Processor IF */ | ||
| 78 | #define IRQ_TSI108_RESERVED5 TSI108_IRQ(22) /* Reserved IRQ */ | ||
| 79 | #define IRQ_TSI108_PCI TSI108_IRQ(23) /* PCI/X block */ | ||
| 80 | |||
| 81 | #define IRQ_TSI108_MBOX0 TSI108_IRQ(24) /* Mailbox 0 register */ | ||
| 82 | #define IRQ_TSI108_MBOX1 TSI108_IRQ(25) /* Mailbox 1 register */ | ||
| 83 | #define IRQ_TSI108_MBOX2 TSI108_IRQ(26) /* Mailbox 2 register */ | ||
| 84 | #define IRQ_TSI108_MBOX3 TSI108_IRQ(27) /* Mailbox 3 register */ | ||
| 85 | |||
| 86 | #define IRQ_TSI108_DBELL0 TSI108_IRQ(28) /* Doorbell 0 */ | ||
| 87 | #define IRQ_TSI108_DBELL1 TSI108_IRQ(29) /* Doorbell 1 */ | ||
| 88 | #define IRQ_TSI108_DBELL2 TSI108_IRQ(30) /* Doorbell 2 */ | ||
| 89 | #define IRQ_TSI108_DBELL3 TSI108_IRQ(31) /* Doorbell 3 */ | ||
| 90 | |||
| 91 | #define IRQ_TSI108_TIMER0 TSI108_IRQ(32) /* Global Timer 0 */ | ||
| 92 | #define IRQ_TSI108_TIMER1 TSI108_IRQ(33) /* Global Timer 1 */ | ||
| 93 | #define IRQ_TSI108_TIMER2 TSI108_IRQ(34) /* Global Timer 2 */ | ||
| 94 | #define IRQ_TSI108_TIMER3 TSI108_IRQ(35) /* Global Timer 3 */ | ||
| 95 | |||
| 96 | /* | ||
| 97 | * PCI bus INTA# - INTD# lines demultiplexor | ||
| 98 | */ | ||
| 99 | #define IRQ_PCI_INTAD_BASE TSI108_IRQ(36) | ||
| 100 | #define IRQ_PCI_INTA (IRQ_PCI_INTAD_BASE + 0) | ||
| 101 | #define IRQ_PCI_INTB (IRQ_PCI_INTAD_BASE + 1) | ||
| 102 | #define IRQ_PCI_INTC (IRQ_PCI_INTAD_BASE + 2) | ||
| 103 | #define IRQ_PCI_INTD (IRQ_PCI_INTAD_BASE + 3) | ||
| 104 | #define NUM_PCI_IRQS (4) | ||
| 105 | |||
| 106 | /* number of entries in vector dispatch table */ | ||
| 107 | #define IRQ_TSI108_TAB_SIZE (TSI108_MAX_VECTORS + 1) | ||
| 108 | |||
| 109 | /* Mapping of MPIC outputs to processors' interrupt pins */ | ||
| 110 | |||
| 111 | #define IDIR_INT_OUT0 0x1 | ||
| 112 | #define IDIR_INT_OUT1 0x2 | ||
| 113 | #define IDIR_INT_OUT2 0x4 | ||
| 114 | #define IDIR_INT_OUT3 0x8 | ||
| 115 | |||
| 116 | /*--------------------------------------------------------------- | ||
| 117 | * IRQ line configuration parameters */ | ||
| 118 | |||
| 119 | /* Interrupt delivery modes */ | ||
| 120 | typedef enum { | ||
| 121 | TSI108_IRQ_DIRECTED, | ||
| 122 | TSI108_IRQ_DISTRIBUTED, | ||
| 123 | } TSI108_IRQ_MODE; | ||
| 124 | #endif /* _ASM_PPC_TSI108_IRQ_H */ | ||
diff --git a/include/asm-ppc/cpm2.h b/include/asm-ppc/cpm2.h index c70344b91049..f6a7ff04ffe5 100644 --- a/include/asm-ppc/cpm2.h +++ b/include/asm-ppc/cpm2.h | |||
| @@ -1093,5 +1093,100 @@ typedef struct im_idma { | |||
| 1093 | 1093 | ||
| 1094 | #define FCC_PSMR_RMII ((uint)0x00020000) /* Use RMII interface */ | 1094 | #define FCC_PSMR_RMII ((uint)0x00020000) /* Use RMII interface */ |
| 1095 | 1095 | ||
| 1096 | /* FCC iop & clock configuration. BSP code is responsible to define Fx_RXCLK & Fx_TXCLK | ||
| 1097 | * in order to use clock-computing stuff below for the FCC x | ||
| 1098 | */ | ||
| 1099 | |||
| 1100 | /* Automatically generates register configurations */ | ||
| 1101 | #define PC_CLK(x) ((uint)(1<<(x-1))) /* FCC CLK I/O ports */ | ||
| 1102 | |||
| 1103 | #define CMXFCR_RF1CS(x) ((uint)((x-5)<<27)) /* FCC1 Receive Clock Source */ | ||
| 1104 | #define CMXFCR_TF1CS(x) ((uint)((x-5)<<24)) /* FCC1 Transmit Clock Source */ | ||
| 1105 | #define CMXFCR_RF2CS(x) ((uint)((x-9)<<19)) /* FCC2 Receive Clock Source */ | ||
| 1106 | #define CMXFCR_TF2CS(x) ((uint)((x-9)<<16)) /* FCC2 Transmit Clock Source */ | ||
| 1107 | #define CMXFCR_RF3CS(x) ((uint)((x-9)<<11)) /* FCC3 Receive Clock Source */ | ||
| 1108 | #define CMXFCR_TF3CS(x) ((uint)((x-9)<<8)) /* FCC3 Transmit Clock Source */ | ||
| 1109 | |||
| 1110 | #define PC_F1RXCLK PC_CLK(F1_RXCLK) | ||
| 1111 | #define PC_F1TXCLK PC_CLK(F1_TXCLK) | ||
| 1112 | #define CMX1_CLK_ROUTE (CMXFCR_RF1CS(F1_RXCLK) | CMXFCR_TF1CS(F1_TXCLK)) | ||
| 1113 | #define CMX1_CLK_MASK ((uint)0xff000000) | ||
| 1114 | |||
| 1115 | #define PC_F2RXCLK PC_CLK(F2_RXCLK) | ||
| 1116 | #define PC_F2TXCLK PC_CLK(F2_TXCLK) | ||
| 1117 | #define CMX2_CLK_ROUTE (CMXFCR_RF2CS(F2_RXCLK) | CMXFCR_TF2CS(F2_TXCLK)) | ||
| 1118 | #define CMX2_CLK_MASK ((uint)0x00ff0000) | ||
| 1119 | |||
| 1120 | #define PC_F3RXCLK PC_CLK(F3_RXCLK) | ||
| 1121 | #define PC_F3TXCLK PC_CLK(F3_TXCLK) | ||
| 1122 | #define CMX3_CLK_ROUTE (CMXFCR_RF3CS(F3_RXCLK) | CMXFCR_TF3CS(F3_TXCLK)) | ||
| 1123 | #define CMX3_CLK_MASK ((uint)0x0000ff00) | ||
| 1124 | |||
| 1125 | #define CPMUX_CLK_MASK (CMX3_CLK_MASK | CMX2_CLK_MASK) | ||
| 1126 | #define CPMUX_CLK_ROUTE (CMX3_CLK_ROUTE | CMX2_CLK_ROUTE) | ||
| 1127 | |||
| 1128 | #define CLK_TRX (PC_F3TXCLK | PC_F3RXCLK | PC_F2TXCLK | PC_F2RXCLK) | ||
| 1129 | |||
| 1130 | /* I/O Pin assignment for FCC1. I don't yet know the best way to do this, | ||
| 1131 | * but there is little variation among the choices. | ||
| 1132 | */ | ||
| 1133 | #define PA1_COL 0x00000001U | ||
| 1134 | #define PA1_CRS 0x00000002U | ||
| 1135 | #define PA1_TXER 0x00000004U | ||
| 1136 | #define PA1_TXEN 0x00000008U | ||
| 1137 | #define PA1_RXDV 0x00000010U | ||
| 1138 | #define PA1_RXER 0x00000020U | ||
| 1139 | #define PA1_TXDAT 0x00003c00U | ||
| 1140 | #define PA1_RXDAT 0x0003c000U | ||
| 1141 | #define PA1_PSORA0 (PA1_RXDAT | PA1_TXDAT) | ||
| 1142 | #define PA1_PSORA1 (PA1_COL | PA1_CRS | PA1_TXER | PA1_TXEN | \ | ||
| 1143 | PA1_RXDV | PA1_RXER) | ||
| 1144 | #define PA1_DIRA0 (PA1_RXDAT | PA1_CRS | PA1_COL | PA1_RXER | PA1_RXDV) | ||
| 1145 | #define PA1_DIRA1 (PA1_TXDAT | PA1_TXEN | PA1_TXER) | ||
| 1146 | |||
| 1147 | |||
| 1148 | /* I/O Pin assignment for FCC2. I don't yet know the best way to do this, | ||
| 1149 | * but there is little variation among the choices. | ||
| 1150 | */ | ||
| 1151 | #define PB2_TXER 0x00000001U | ||
| 1152 | #define PB2_RXDV 0x00000002U | ||
| 1153 | #define PB2_TXEN 0x00000004U | ||
| 1154 | #define PB2_RXER 0x00000008U | ||
| 1155 | #define PB2_COL 0x00000010U | ||
| 1156 | #define PB2_CRS 0x00000020U | ||
| 1157 | #define PB2_TXDAT 0x000003c0U | ||
| 1158 | #define PB2_RXDAT 0x00003c00U | ||
| 1159 | #define PB2_PSORB0 (PB2_RXDAT | PB2_TXDAT | PB2_CRS | PB2_COL | \ | ||
| 1160 | PB2_RXER | PB2_RXDV | PB2_TXER) | ||
| 1161 | #define PB2_PSORB1 (PB2_TXEN) | ||
| 1162 | #define PB2_DIRB0 (PB2_RXDAT | PB2_CRS | PB2_COL | PB2_RXER | PB2_RXDV) | ||
| 1163 | #define PB2_DIRB1 (PB2_TXDAT | PB2_TXEN | PB2_TXER) | ||
| 1164 | |||
| 1165 | |||
| 1166 | /* I/O Pin assignment for FCC3. I don't yet know the best way to do this, | ||
| 1167 | * but there is little variation among the choices. | ||
| 1168 | */ | ||
| 1169 | #define PB3_RXDV 0x00004000U | ||
| 1170 | #define PB3_RXER 0x00008000U | ||
| 1171 | #define PB3_TXER 0x00010000U | ||
| 1172 | #define PB3_TXEN 0x00020000U | ||
| 1173 | #define PB3_COL 0x00040000U | ||
| 1174 | #define PB3_CRS 0x00080000U | ||
| 1175 | #define PB3_TXDAT 0x0f000000U | ||
| 1176 | #define PC3_TXDAT 0x00000010U | ||
| 1177 | #define PB3_RXDAT 0x00f00000U | ||
| 1178 | #define PB3_PSORB0 (PB3_RXDAT | PB3_TXDAT | PB3_CRS | PB3_COL | \ | ||
| 1179 | PB3_RXER | PB3_RXDV | PB3_TXER | PB3_TXEN) | ||
| 1180 | #define PB3_PSORB1 0 | ||
| 1181 | #define PB3_DIRB0 (PB3_RXDAT | PB3_CRS | PB3_COL | PB3_RXER | PB3_RXDV) | ||
| 1182 | #define PB3_DIRB1 (PB3_TXDAT | PB3_TXEN | PB3_TXER) | ||
| 1183 | #define PC3_DIRC1 (PC3_TXDAT) | ||
| 1184 | |||
| 1185 | /* Handy macro to specify mem for FCCs*/ | ||
| 1186 | #define FCC_MEM_OFFSET(x) (CPM_FCC_SPECIAL_BASE + (x*128)) | ||
| 1187 | #define FCC1_MEM_OFFSET FCC_MEM_OFFSET(0) | ||
| 1188 | #define FCC2_MEM_OFFSET FCC_MEM_OFFSET(1) | ||
| 1189 | #define FCC2_MEM_OFFSET FCC_MEM_OFFSET(2) | ||
| 1190 | |||
| 1096 | #endif /* __CPM2__ */ | 1191 | #endif /* __CPM2__ */ |
| 1097 | #endif /* __KERNEL__ */ | 1192 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-ppc/mpc8260.h b/include/asm-ppc/mpc8260.h index 4b93481e7679..23579d4afae7 100644 --- a/include/asm-ppc/mpc8260.h +++ b/include/asm-ppc/mpc8260.h | |||
| @@ -82,6 +82,7 @@ enum ppc_sys_devices { | |||
| 82 | MPC82xx_CPM_SMC2, | 82 | MPC82xx_CPM_SMC2, |
| 83 | MPC82xx_CPM_USB, | 83 | MPC82xx_CPM_USB, |
| 84 | MPC82xx_SEC1, | 84 | MPC82xx_SEC1, |
| 85 | MPC82xx_MDIO_BB, | ||
| 85 | NUM_PPC_SYS_DEVS, | 86 | NUM_PPC_SYS_DEVS, |
| 86 | }; | 87 | }; |
| 87 | 88 | ||
diff --git a/include/asm-ppc/mpc8xx.h b/include/asm-ppc/mpc8xx.h index adcce33f20ae..d3a2f2fe230c 100644 --- a/include/asm-ppc/mpc8xx.h +++ b/include/asm-ppc/mpc8xx.h | |||
| @@ -110,6 +110,7 @@ enum ppc_sys_devices { | |||
| 110 | MPC8xx_CPM_SMC1, | 110 | MPC8xx_CPM_SMC1, |
| 111 | MPC8xx_CPM_SMC2, | 111 | MPC8xx_CPM_SMC2, |
| 112 | MPC8xx_CPM_USB, | 112 | MPC8xx_CPM_USB, |
| 113 | MPC8xx_MDIO_FEC, | ||
| 113 | NUM_PPC_SYS_DEVS, | 114 | NUM_PPC_SYS_DEVS, |
| 114 | }; | 115 | }; |
| 115 | 116 | ||
diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h index 1ba19eb34ce3..ebfe395cfb87 100644 --- a/include/asm-sparc64/pgtable.h +++ b/include/asm-sparc64/pgtable.h | |||
| @@ -234,7 +234,7 @@ static inline pte_t pfn_pte(unsigned long pfn, pgprot_t prot) | |||
| 234 | sz_bits = 0UL; | 234 | sz_bits = 0UL; |
| 235 | if (_PAGE_SZBITS_4U != 0UL || _PAGE_SZBITS_4V != 0UL) { | 235 | if (_PAGE_SZBITS_4U != 0UL || _PAGE_SZBITS_4V != 0UL) { |
| 236 | __asm__ __volatile__( | 236 | __asm__ __volatile__( |
| 237 | "\n661: sethi %uhi(%1), %0\n" | 237 | "\n661: sethi %%uhi(%1), %0\n" |
| 238 | " sllx %0, 32, %0\n" | 238 | " sllx %0, 32, %0\n" |
| 239 | " .section .sun4v_2insn_patch, \"ax\"\n" | 239 | " .section .sun4v_2insn_patch, \"ax\"\n" |
| 240 | " .word 661b\n" | 240 | " .word 661b\n" |
diff --git a/include/linux/compat_ioctl.h b/include/linux/compat_ioctl.h index 269d000bb2a3..bea0255196c4 100644 --- a/include/linux/compat_ioctl.h +++ b/include/linux/compat_ioctl.h | |||
| @@ -216,6 +216,7 @@ COMPATIBLE_IOCTL(VT_RESIZE) | |||
| 216 | COMPATIBLE_IOCTL(VT_RESIZEX) | 216 | COMPATIBLE_IOCTL(VT_RESIZEX) |
| 217 | COMPATIBLE_IOCTL(VT_LOCKSWITCH) | 217 | COMPATIBLE_IOCTL(VT_LOCKSWITCH) |
| 218 | COMPATIBLE_IOCTL(VT_UNLOCKSWITCH) | 218 | COMPATIBLE_IOCTL(VT_UNLOCKSWITCH) |
| 219 | COMPATIBLE_IOCTL(VT_GETHIFONTMASK) | ||
| 219 | /* Little p (/dev/rtc, /dev/envctrl, etc.) */ | 220 | /* Little p (/dev/rtc, /dev/envctrl, etc.) */ |
| 220 | COMPATIBLE_IOCTL(RTC_AIE_ON) | 221 | COMPATIBLE_IOCTL(RTC_AIE_ON) |
| 221 | COMPATIBLE_IOCTL(RTC_AIE_OFF) | 222 | COMPATIBLE_IOCTL(RTC_AIE_OFF) |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 25610205c90d..555bc195c420 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -570,13 +570,14 @@ struct inode { | |||
| 570 | * 3: quota file | 570 | * 3: quota file |
| 571 | * | 571 | * |
| 572 | * The locking order between these classes is | 572 | * The locking order between these classes is |
| 573 | * parent -> child -> normal -> quota | 573 | * parent -> child -> normal -> xattr -> quota |
| 574 | */ | 574 | */ |
| 575 | enum inode_i_mutex_lock_class | 575 | enum inode_i_mutex_lock_class |
| 576 | { | 576 | { |
| 577 | I_MUTEX_NORMAL, | 577 | I_MUTEX_NORMAL, |
| 578 | I_MUTEX_PARENT, | 578 | I_MUTEX_PARENT, |
| 579 | I_MUTEX_CHILD, | 579 | I_MUTEX_CHILD, |
| 580 | I_MUTEX_XATTR, | ||
| 580 | I_MUTEX_QUOTA | 581 | I_MUTEX_QUOTA |
| 581 | }; | 582 | }; |
| 582 | 583 | ||
diff --git a/include/linux/fs_enet_pd.h b/include/linux/fs_enet_pd.h index 783c476b8674..74ed35a00a94 100644 --- a/include/linux/fs_enet_pd.h +++ b/include/linux/fs_enet_pd.h | |||
| @@ -69,34 +69,21 @@ enum fs_ioport { | |||
| 69 | fsiop_porte, | 69 | fsiop_porte, |
| 70 | }; | 70 | }; |
| 71 | 71 | ||
| 72 | struct fs_mii_bus_info { | 72 | struct fs_mii_bit { |
| 73 | int method; /* mii method */ | 73 | u32 offset; |
| 74 | int id; /* the id of the mii_bus */ | 74 | u8 bit; |
| 75 | int disable_aneg; /* if the controller needs to negothiate speed & duplex */ | 75 | u8 polarity; |
| 76 | int lpa; /* the default board-specific vallues will be applied otherwise */ | 76 | }; |
| 77 | 77 | struct fs_mii_bb_platform_info { | |
| 78 | union { | 78 | struct fs_mii_bit mdio_dir; |
| 79 | struct { | 79 | struct fs_mii_bit mdio_dat; |
| 80 | int duplex; | 80 | struct fs_mii_bit mdc_dat; |
| 81 | int speed; | 81 | int mdio_port; /* port & bit for MDIO */ |
| 82 | } fixed; | 82 | int mdio_bit; |
| 83 | 83 | int mdc_port; /* port & bit for MDC */ | |
| 84 | struct { | 84 | int mdc_bit; |
| 85 | /* nothing */ | 85 | int delay; /* delay in us */ |
| 86 | } fec; | 86 | int irq[32]; /* irqs per phy's */ |
| 87 | |||
| 88 | struct { | ||
| 89 | /* nothing */ | ||
| 90 | } scc; | ||
| 91 | |||
| 92 | struct { | ||
| 93 | int mdio_port; /* port & bit for MDIO */ | ||
| 94 | int mdio_bit; | ||
| 95 | int mdc_port; /* port & bit for MDC */ | ||
| 96 | int mdc_bit; | ||
| 97 | int delay; /* delay in us */ | ||
| 98 | } bitbang; | ||
| 99 | } i; | ||
| 100 | }; | 87 | }; |
| 101 | 88 | ||
| 102 | struct fs_platform_info { | 89 | struct fs_platform_info { |
| @@ -119,6 +106,7 @@ struct fs_platform_info { | |||
| 119 | u32 device_flags; | 106 | u32 device_flags; |
| 120 | 107 | ||
| 121 | int phy_addr; /* the phy address (-1 no phy) */ | 108 | int phy_addr; /* the phy address (-1 no phy) */ |
| 109 | const char* bus_id; | ||
| 122 | int phy_irq; /* the phy irq (if it exists) */ | 110 | int phy_irq; /* the phy irq (if it exists) */ |
| 123 | 111 | ||
| 124 | const struct fs_mii_bus_info *bus_info; | 112 | const struct fs_mii_bus_info *bus_info; |
| @@ -130,6 +118,10 @@ struct fs_platform_info { | |||
| 130 | int napi_weight; /* NAPI weight */ | 118 | int napi_weight; /* NAPI weight */ |
| 131 | 119 | ||
| 132 | int use_rmii; /* use RMII mode */ | 120 | int use_rmii; /* use RMII mode */ |
| 121 | int has_phy; /* if the network is phy container as well...*/ | ||
| 122 | }; | ||
| 123 | struct fs_mii_fec_platform_info { | ||
| 124 | u32 irq[32]; | ||
| 125 | u32 mii_speed; | ||
| 133 | }; | 126 | }; |
| 134 | |||
| 135 | #endif | 127 | #endif |
diff --git a/include/linux/ioprio.h b/include/linux/ioprio.h index 88d5961f7a3f..8e2042b9d471 100644 --- a/include/linux/ioprio.h +++ b/include/linux/ioprio.h | |||
| @@ -59,27 +59,6 @@ static inline int task_nice_ioprio(struct task_struct *task) | |||
| 59 | /* | 59 | /* |
| 60 | * For inheritance, return the highest of the two given priorities | 60 | * For inheritance, return the highest of the two given priorities |
| 61 | */ | 61 | */ |
| 62 | static inline int ioprio_best(unsigned short aprio, unsigned short bprio) | 62 | extern int ioprio_best(unsigned short aprio, unsigned short bprio); |
| 63 | { | ||
| 64 | unsigned short aclass = IOPRIO_PRIO_CLASS(aprio); | ||
| 65 | unsigned short bclass = IOPRIO_PRIO_CLASS(bprio); | ||
| 66 | |||
| 67 | if (!ioprio_valid(aprio)) | ||
| 68 | return bprio; | ||
| 69 | if (!ioprio_valid(bprio)) | ||
| 70 | return aprio; | ||
| 71 | |||
| 72 | if (aclass == IOPRIO_CLASS_NONE) | ||
| 73 | aclass = IOPRIO_CLASS_BE; | ||
| 74 | if (bclass == IOPRIO_CLASS_NONE) | ||
| 75 | bclass = IOPRIO_CLASS_BE; | ||
| 76 | |||
| 77 | if (aclass == bclass) | ||
| 78 | return min(aprio, bprio); | ||
| 79 | if (aclass > bclass) | ||
| 80 | return bprio; | ||
| 81 | else | ||
| 82 | return aprio; | ||
| 83 | } | ||
| 84 | 63 | ||
| 85 | #endif | 64 | #endif |
diff --git a/include/linux/jbd.h b/include/linux/jbd.h index 20eb34403d0c..a04c154c5207 100644 --- a/include/linux/jbd.h +++ b/include/linux/jbd.h | |||
| @@ -72,6 +72,9 @@ extern int journal_enable_debug; | |||
| 72 | #endif | 72 | #endif |
| 73 | 73 | ||
| 74 | extern void * __jbd_kmalloc (const char *where, size_t size, gfp_t flags, int retry); | 74 | extern void * __jbd_kmalloc (const char *where, size_t size, gfp_t flags, int retry); |
| 75 | extern void * jbd_slab_alloc(size_t size, gfp_t flags); | ||
| 76 | extern void jbd_slab_free(void *ptr, size_t size); | ||
| 77 | |||
| 75 | #define jbd_kmalloc(size, flags) \ | 78 | #define jbd_kmalloc(size, flags) \ |
| 76 | __jbd_kmalloc(__FUNCTION__, (size), (flags), journal_oom_retry) | 79 | __jbd_kmalloc(__FUNCTION__, (size), (flags), journal_oom_retry) |
| 77 | #define jbd_rep_kmalloc(size, flags) \ | 80 | #define jbd_rep_kmalloc(size, flags) \ |
diff --git a/include/linux/netfilter_bridge.h b/include/linux/netfilter_bridge.h index 10c13dc4665b..427c67ff89e9 100644 --- a/include/linux/netfilter_bridge.h +++ b/include/linux/netfilter_bridge.h | |||
| @@ -48,15 +48,25 @@ enum nf_br_hook_priorities { | |||
| 48 | 48 | ||
| 49 | /* Only used in br_forward.c */ | 49 | /* Only used in br_forward.c */ |
| 50 | static inline | 50 | static inline |
| 51 | void nf_bridge_maybe_copy_header(struct sk_buff *skb) | 51 | int nf_bridge_maybe_copy_header(struct sk_buff *skb) |
| 52 | { | 52 | { |
| 53 | int err; | ||
| 54 | |||
| 53 | if (skb->nf_bridge) { | 55 | if (skb->nf_bridge) { |
| 54 | if (skb->protocol == __constant_htons(ETH_P_8021Q)) { | 56 | if (skb->protocol == __constant_htons(ETH_P_8021Q)) { |
| 57 | err = skb_cow(skb, 18); | ||
| 58 | if (err) | ||
| 59 | return err; | ||
| 55 | memcpy(skb->data - 18, skb->nf_bridge->data, 18); | 60 | memcpy(skb->data - 18, skb->nf_bridge->data, 18); |
| 56 | skb_push(skb, 4); | 61 | skb_push(skb, 4); |
| 57 | } else | 62 | } else { |
| 63 | err = skb_cow(skb, 16); | ||
| 64 | if (err) | ||
| 65 | return err; | ||
| 58 | memcpy(skb->data - 16, skb->nf_bridge->data, 16); | 66 | memcpy(skb->data - 16, skb->nf_bridge->data, 16); |
| 67 | } | ||
| 59 | } | 68 | } |
| 69 | return 0; | ||
| 60 | } | 70 | } |
| 61 | 71 | ||
| 62 | /* This is called by the IP fragmenting code and it ensures there is | 72 | /* This is called by the IP fragmenting code and it ensures there is |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 2d3fb6416d91..db9cbf68e12b 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
| @@ -659,7 +659,7 @@ struct nfs4_rename_res { | |||
| 659 | struct nfs4_setclientid { | 659 | struct nfs4_setclientid { |
| 660 | const nfs4_verifier * sc_verifier; /* request */ | 660 | const nfs4_verifier * sc_verifier; /* request */ |
| 661 | unsigned int sc_name_len; | 661 | unsigned int sc_name_len; |
| 662 | char sc_name[32]; /* request */ | 662 | char sc_name[48]; /* request */ |
| 663 | u32 sc_prog; /* request */ | 663 | u32 sc_prog; /* request */ |
| 664 | unsigned int sc_netid_len; | 664 | unsigned int sc_netid_len; |
| 665 | char sc_netid[4]; /* request */ | 665 | char sc_netid[4]; /* request */ |
diff --git a/include/linux/node.h b/include/linux/node.h index 81dcec84cd8f..bc001bc225c3 100644 --- a/include/linux/node.h +++ b/include/linux/node.h | |||
| @@ -30,12 +30,20 @@ extern struct node node_devices[]; | |||
| 30 | 30 | ||
| 31 | extern int register_node(struct node *, int, struct node *); | 31 | extern int register_node(struct node *, int, struct node *); |
| 32 | extern void unregister_node(struct node *node); | 32 | extern void unregister_node(struct node *node); |
| 33 | #ifdef CONFIG_NUMA | ||
| 33 | extern int register_one_node(int nid); | 34 | extern int register_one_node(int nid); |
| 34 | extern void unregister_one_node(int nid); | 35 | extern void unregister_one_node(int nid); |
| 35 | #ifdef CONFIG_NUMA | ||
| 36 | extern int register_cpu_under_node(unsigned int cpu, unsigned int nid); | 36 | extern int register_cpu_under_node(unsigned int cpu, unsigned int nid); |
| 37 | extern int unregister_cpu_under_node(unsigned int cpu, unsigned int nid); | 37 | extern int unregister_cpu_under_node(unsigned int cpu, unsigned int nid); |
| 38 | #else | 38 | #else |
| 39 | static inline int register_one_node(int nid) | ||
| 40 | { | ||
| 41 | return 0; | ||
| 42 | } | ||
| 43 | static inline int unregister_one_node(int nid) | ||
| 44 | { | ||
| 45 | return 0; | ||
| 46 | } | ||
| 39 | static inline int register_cpu_under_node(unsigned int cpu, unsigned int nid) | 47 | static inline int register_cpu_under_node(unsigned int cpu, unsigned int nid) |
| 40 | { | 48 | { |
| 41 | return 0; | 49 | return 0; |
diff --git a/include/linux/phy.h b/include/linux/phy.h index 331521a10a2d..9447a57ee8a9 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h | |||
| @@ -378,6 +378,7 @@ int phy_mii_ioctl(struct phy_device *phydev, | |||
| 378 | struct mii_ioctl_data *mii_data, int cmd); | 378 | struct mii_ioctl_data *mii_data, int cmd); |
| 379 | int phy_start_interrupts(struct phy_device *phydev); | 379 | int phy_start_interrupts(struct phy_device *phydev); |
| 380 | void phy_print_status(struct phy_device *phydev); | 380 | void phy_print_status(struct phy_device *phydev); |
| 381 | struct phy_device* phy_device_create(struct mii_bus *bus, int addr, int phy_id); | ||
| 381 | 382 | ||
| 382 | extern struct bus_type mdio_bus_type; | 383 | extern struct bus_type mdio_bus_type; |
| 383 | #endif /* __PHY_H */ | 384 | #endif /* __PHY_H */ |
diff --git a/include/linux/sunrpc/rpc_pipe_fs.h b/include/linux/sunrpc/rpc_pipe_fs.h index 2c2189cb30aa..a481472c9484 100644 --- a/include/linux/sunrpc/rpc_pipe_fs.h +++ b/include/linux/sunrpc/rpc_pipe_fs.h | |||
| @@ -42,9 +42,9 @@ RPC_I(struct inode *inode) | |||
| 42 | extern int rpc_queue_upcall(struct inode *, struct rpc_pipe_msg *); | 42 | extern int rpc_queue_upcall(struct inode *, struct rpc_pipe_msg *); |
| 43 | 43 | ||
| 44 | extern struct dentry *rpc_mkdir(char *, struct rpc_clnt *); | 44 | extern struct dentry *rpc_mkdir(char *, struct rpc_clnt *); |
| 45 | extern int rpc_rmdir(char *); | 45 | extern int rpc_rmdir(struct dentry *); |
| 46 | extern struct dentry *rpc_mkpipe(char *, void *, struct rpc_pipe_ops *, int flags); | 46 | extern struct dentry *rpc_mkpipe(char *, void *, struct rpc_pipe_ops *, int flags); |
| 47 | extern int rpc_unlink(char *); | 47 | extern int rpc_unlink(struct dentry *); |
| 48 | extern struct vfsmount *rpc_get_mount(void); | 48 | extern struct vfsmount *rpc_get_mount(void); |
| 49 | extern void rpc_put_mount(void); | 49 | extern void rpc_put_mount(void); |
| 50 | 50 | ||
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h index 840e47a4ccc5..3a0cca255b76 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h | |||
| @@ -37,7 +37,7 @@ extern unsigned int xprt_max_resvport; | |||
| 37 | 37 | ||
| 38 | #define RPC_MIN_RESVPORT (1U) | 38 | #define RPC_MIN_RESVPORT (1U) |
| 39 | #define RPC_MAX_RESVPORT (65535U) | 39 | #define RPC_MAX_RESVPORT (65535U) |
| 40 | #define RPC_DEF_MIN_RESVPORT (650U) | 40 | #define RPC_DEF_MIN_RESVPORT (665U) |
| 41 | #define RPC_DEF_MAX_RESVPORT (1023U) | 41 | #define RPC_DEF_MAX_RESVPORT (1023U) |
| 42 | 42 | ||
| 43 | /* | 43 | /* |
diff --git a/include/linux/tty.h b/include/linux/tty.h index e421d5e34818..04827ca65781 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
| @@ -59,6 +59,7 @@ struct tty_bufhead { | |||
| 59 | struct tty_buffer *head; /* Queue head */ | 59 | struct tty_buffer *head; /* Queue head */ |
| 60 | struct tty_buffer *tail; /* Active buffer */ | 60 | struct tty_buffer *tail; /* Active buffer */ |
| 61 | struct tty_buffer *free; /* Free queue head */ | 61 | struct tty_buffer *free; /* Free queue head */ |
| 62 | int memory_used; /* Buffer space used excluding free queue */ | ||
| 62 | }; | 63 | }; |
| 63 | /* | 64 | /* |
| 64 | * The pty uses char_buf and flag_buf as a contiguous buffer | 65 | * The pty uses char_buf and flag_buf as a contiguous buffer |
diff --git a/include/linux/vt.h b/include/linux/vt.h index 8ab334a48222..ba806e8711be 100644 --- a/include/linux/vt.h +++ b/include/linux/vt.h | |||
| @@ -60,5 +60,6 @@ struct vt_consize { | |||
| 60 | #define VT_RESIZEX 0x560A /* set kernel's idea of screensize + more */ | 60 | #define VT_RESIZEX 0x560A /* set kernel's idea of screensize + more */ |
| 61 | #define VT_LOCKSWITCH 0x560B /* disallow vt switching */ | 61 | #define VT_LOCKSWITCH 0x560B /* disallow vt switching */ |
| 62 | #define VT_UNLOCKSWITCH 0x560C /* allow vt switching */ | 62 | #define VT_UNLOCKSWITCH 0x560C /* allow vt switching */ |
| 63 | #define VT_GETHIFONTMASK 0x560D /* return hi font mask */ | ||
| 63 | 64 | ||
| 64 | #endif /* _LINUX_VT_H */ | 65 | #endif /* _LINUX_VT_H */ |
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index a9663b49ea54..92eae0e0f3f1 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h | |||
| @@ -404,19 +404,6 @@ static inline int sctp_list_single_entry(struct list_head *head) | |||
| 404 | return ((head->next != head) && (head->next == head->prev)); | 404 | return ((head->next != head) && (head->next == head->prev)); |
| 405 | } | 405 | } |
| 406 | 406 | ||
| 407 | /* Calculate the size (in bytes) occupied by the data of an iovec. */ | ||
| 408 | static inline size_t get_user_iov_size(struct iovec *iov, int iovlen) | ||
| 409 | { | ||
| 410 | size_t retval = 0; | ||
| 411 | |||
| 412 | for (; iovlen > 0; --iovlen) { | ||
| 413 | retval += iov->iov_len; | ||
| 414 | iov++; | ||
| 415 | } | ||
| 416 | |||
| 417 | return retval; | ||
| 418 | } | ||
| 419 | |||
| 420 | /* Generate a random jitter in the range of -50% ~ +50% of input RTO. */ | 407 | /* Generate a random jitter in the range of -50% ~ +50% of input RTO. */ |
| 421 | static inline __s32 sctp_jitter(__u32 rto) | 408 | static inline __s32 sctp_jitter(__u32 rto) |
| 422 | { | 409 | { |
diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h index 1eac3d0eb7a9..de313de4fefe 100644 --- a/include/net/sctp/sm.h +++ b/include/net/sctp/sm.h | |||
| @@ -221,8 +221,7 @@ struct sctp_chunk *sctp_make_abort_no_data(const struct sctp_association *, | |||
| 221 | const struct sctp_chunk *, | 221 | const struct sctp_chunk *, |
| 222 | __u32 tsn); | 222 | __u32 tsn); |
| 223 | struct sctp_chunk *sctp_make_abort_user(const struct sctp_association *, | 223 | struct sctp_chunk *sctp_make_abort_user(const struct sctp_association *, |
| 224 | const struct sctp_chunk *, | 224 | const struct msghdr *, size_t msg_len); |
| 225 | const struct msghdr *); | ||
| 226 | struct sctp_chunk *sctp_make_abort_violation(const struct sctp_association *, | 225 | struct sctp_chunk *sctp_make_abort_violation(const struct sctp_association *, |
| 227 | const struct sctp_chunk *, | 226 | const struct sctp_chunk *, |
| 228 | const __u8 *, | 227 | const __u8 *, |
diff --git a/include/scsi/libiscsi.h b/include/scsi/libiscsi.h index ba2760802ded..41904f611d12 100644 --- a/include/scsi/libiscsi.h +++ b/include/scsi/libiscsi.h | |||
| @@ -60,6 +60,7 @@ struct iscsi_nopin; | |||
| 60 | #define TMABORT_SUCCESS 0x1 | 60 | #define TMABORT_SUCCESS 0x1 |
| 61 | #define TMABORT_FAILED 0x2 | 61 | #define TMABORT_FAILED 0x2 |
| 62 | #define TMABORT_TIMEDOUT 0x3 | 62 | #define TMABORT_TIMEDOUT 0x3 |
| 63 | #define TMABORT_NOT_FOUND 0x4 | ||
| 63 | 64 | ||
| 64 | /* Connection suspend "bit" */ | 65 | /* Connection suspend "bit" */ |
| 65 | #define ISCSI_SUSPEND_BIT 1 | 66 | #define ISCSI_SUSPEND_BIT 1 |
| @@ -83,6 +84,12 @@ struct iscsi_mgmt_task { | |||
| 83 | struct list_head running; | 84 | struct list_head running; |
| 84 | }; | 85 | }; |
| 85 | 86 | ||
| 87 | enum { | ||
| 88 | ISCSI_TASK_COMPLETED, | ||
| 89 | ISCSI_TASK_PENDING, | ||
| 90 | ISCSI_TASK_RUNNING, | ||
| 91 | }; | ||
| 92 | |||
| 86 | struct iscsi_cmd_task { | 93 | struct iscsi_cmd_task { |
| 87 | /* | 94 | /* |
| 88 | * Becuae LLDs allocate their hdr differently, this is a pointer to | 95 | * Becuae LLDs allocate their hdr differently, this is a pointer to |
| @@ -101,6 +108,8 @@ struct iscsi_cmd_task { | |||
| 101 | struct iscsi_conn *conn; /* used connection */ | 108 | struct iscsi_conn *conn; /* used connection */ |
| 102 | struct iscsi_mgmt_task *mtask; /* tmf mtask in progr */ | 109 | struct iscsi_mgmt_task *mtask; /* tmf mtask in progr */ |
| 103 | 110 | ||
| 111 | /* state set/tested under session->lock */ | ||
| 112 | int state; | ||
| 104 | struct list_head running; /* running cmd list */ | 113 | struct list_head running; /* running cmd list */ |
| 105 | void *dd_data; /* driver/transport data */ | 114 | void *dd_data; /* driver/transport data */ |
| 106 | }; | 115 | }; |
| @@ -126,6 +135,14 @@ struct iscsi_conn { | |||
| 126 | int id; /* CID */ | 135 | int id; /* CID */ |
| 127 | struct list_head item; /* maintains list of conns */ | 136 | struct list_head item; /* maintains list of conns */ |
| 128 | int c_stage; /* connection state */ | 137 | int c_stage; /* connection state */ |
| 138 | /* | ||
| 139 | * Preallocated buffer for pdus that have data but do not | ||
| 140 | * originate from scsi-ml. We never have two pdus using the | ||
| 141 | * buffer at the same time. It is only allocated to | ||
| 142 | * the default max recv size because the pdus we support | ||
| 143 | * should always fit in this buffer | ||
| 144 | */ | ||
| 145 | char *data; | ||
| 129 | struct iscsi_mgmt_task *login_mtask; /* mtask used for login/text */ | 146 | struct iscsi_mgmt_task *login_mtask; /* mtask used for login/text */ |
| 130 | struct iscsi_mgmt_task *mtask; /* xmit mtask in progress */ | 147 | struct iscsi_mgmt_task *mtask; /* xmit mtask in progress */ |
| 131 | struct iscsi_cmd_task *ctask; /* xmit ctask in progress */ | 148 | struct iscsi_cmd_task *ctask; /* xmit ctask in progress */ |
| @@ -134,7 +151,7 @@ struct iscsi_conn { | |||
| 134 | struct kfifo *immqueue; /* immediate xmit queue */ | 151 | struct kfifo *immqueue; /* immediate xmit queue */ |
| 135 | struct kfifo *mgmtqueue; /* mgmt (control) xmit queue */ | 152 | struct kfifo *mgmtqueue; /* mgmt (control) xmit queue */ |
| 136 | struct list_head mgmt_run_list; /* list of control tasks */ | 153 | struct list_head mgmt_run_list; /* list of control tasks */ |
| 137 | struct kfifo *xmitqueue; /* data-path cmd queue */ | 154 | struct list_head xmitqueue; /* data-path cmd queue */ |
| 138 | struct list_head run_list; /* list of cmds in progress */ | 155 | struct list_head run_list; /* list of cmds in progress */ |
| 139 | struct work_struct xmitwork; /* per-conn. xmit workqueue */ | 156 | struct work_struct xmitwork; /* per-conn. xmit workqueue */ |
| 140 | /* | 157 | /* |
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h index 5a3df1d7085f..39e833260bd0 100644 --- a/include/scsi/scsi_transport_iscsi.h +++ b/include/scsi/scsi_transport_iscsi.h | |||
| @@ -57,8 +57,6 @@ struct sockaddr; | |||
| 57 | * @stop_conn: suspend/recover/terminate connection | 57 | * @stop_conn: suspend/recover/terminate connection |
| 58 | * @send_pdu: send iSCSI PDU, Login, Logout, NOP-Out, Reject, Text. | 58 | * @send_pdu: send iSCSI PDU, Login, Logout, NOP-Out, Reject, Text. |
| 59 | * @session_recovery_timedout: notify LLD a block during recovery timed out | 59 | * @session_recovery_timedout: notify LLD a block during recovery timed out |
| 60 | * @suspend_conn_recv: susepend the recv side of the connection | ||
| 61 | * @termincate_conn: destroy socket connection. Called with mutex lock. | ||
| 62 | * @init_cmd_task: Initialize a iscsi_cmd_task and any internal structs. | 60 | * @init_cmd_task: Initialize a iscsi_cmd_task and any internal structs. |
| 63 | * Called from queuecommand with session lock held. | 61 | * Called from queuecommand with session lock held. |
| 64 | * @init_mgmt_task: Initialize a iscsi_mgmt_task and any internal structs. | 62 | * @init_mgmt_task: Initialize a iscsi_mgmt_task and any internal structs. |
| @@ -112,8 +110,6 @@ struct iscsi_transport { | |||
| 112 | char *data, uint32_t data_size); | 110 | char *data, uint32_t data_size); |
| 113 | void (*get_stats) (struct iscsi_cls_conn *conn, | 111 | void (*get_stats) (struct iscsi_cls_conn *conn, |
| 114 | struct iscsi_stats *stats); | 112 | struct iscsi_stats *stats); |
| 115 | void (*suspend_conn_recv) (struct iscsi_conn *conn); | ||
| 116 | void (*terminate_conn) (struct iscsi_conn *conn); | ||
| 117 | void (*init_cmd_task) (struct iscsi_cmd_task *ctask); | 113 | void (*init_cmd_task) (struct iscsi_cmd_task *ctask); |
| 118 | void (*init_mgmt_task) (struct iscsi_conn *conn, | 114 | void (*init_mgmt_task) (struct iscsi_conn *conn, |
| 119 | struct iscsi_mgmt_task *mtask, | 115 | struct iscsi_mgmt_task *mtask, |
