···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Modifications:1313- * 24-Aug-2004 BJD Start of generic S3C24XX support1414- * 18-Oct-2004 BJD Moved board struct into this file1515- * 04-Jan-2005 BJD New uart initialisation1616- * 10-Jan-2005 BJD Moved generic init here, specific to cpu headers1717- * 14-Jan-2005 BJD Added s3c24xx_init_clocks() call1818- * 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ} & IODESC_ENT1919- * 14-Mar-2005 BJD Updated for __iomem2020- * 15-Jan-2006 LCVR Updated S3C2410_PA_##x to new S3C24XX_PA_##x macro2111*/22122313/* todo - fix when rmk changes iodescs to use `void __iomem *` */
+2-10
arch/arm/mach-s3c2410/devs.c
···11/* linux/arch/arm/mach-s3c2410/devs.c22 *33 * Copyright (c) 2004 Simtec Electronics44- * Ben Dooks <ben@simtec.co.uk>44+ * Ben Dooks <ben@simtec.co.uk>55 *66- * Base S3C2410 platform device definitions66+ * Base S3C24XX platform device definitions77 *88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111 *1212- * Modifications:1313- * 15-Jan-2006 LCVR Using S3C24XX_PA_##x macro for common S3C24XX devices1414- * 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ}1515- * 10-Feb-2005 BJD Added camera from guillaume.gourat@nexvision.tv1616- * 29-Aug-2004 BJD Added timers 0 through 31717- * 29-Aug-2004 BJD Changed index of devices we only have one of to -11818- * 21-Aug-2004 BJD Added IRQ_TICK to RTC resources1919- * 18-Aug-2004 BJD Created initial version2012*/21132214#include <linux/kernel.h>
+2-2
arch/arm/mach-s3c2410/irq.c
···8686unsigned long s3c_irqwake_eintallow = 0x0000fff0L;8787unsigned long s3c_irqwake_eintmask = 0xffffffffL;88888989-static int8989+int9090s3c_irq_wake(unsigned int irqno, unsigned int state)9191{9292 unsigned long irqbit = 1 << (irqno - IRQ_EINT0);···260260 s3c_irq_unmask((irqno <= (IRQ_EINT7 - EXTINT_OFF)) ? IRQ_EINT4t7 : IRQ_EINT8t23);261261}262262263263-static int263263+int264264s3c_irqext_type(unsigned int irq, unsigned int type)265265{266266 void __iomem *extint_reg;
+5
arch/arm/mach-s3c2410/irq.h
···9797 __raw_writel(parentmask, S3C2410_INTPND);9898 }9999}100100+101101+/* exported for use in arch/arm/mach-s3c2410 */102102+103103+extern int s3c_irq_wake(unsigned int irqno, unsigned int state);104104+extern int s3c_irqext_type(unsigned int irq, unsigned int type);
-25
arch/arm/mach-s3c2410/mach-bast.c
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Modifications:1313- * 14-Sep-2004 BJD USB power control1414- * 20-Aug-2004 BJD Added s3c2410_board struct1515- * 18-Aug-2004 BJD Added platform devices from default set1616- * 16-May-2003 BJD Created initial version1717- * 16-Aug-2003 BJD Fixed header files and copyright, added URL1818- * 05-Sep-2003 BJD Moved to v2.6 kernel1919- * 06-Jan-2003 BJD Updates for <arch/map.h>2020- * 18-Jan-2003 BJD Added serial port configuration2121- * 05-Oct-2004 BJD Power management code2222- * 04-Nov-2004 BJD Updated serial port clocks2323- * 04-Jan-2005 BJD New uart init call2424- * 10-Jan-2005 BJD Removed include of s3c2410.h2525- * 14-Jan-2005 BJD Add support for muitlple NAND devices2626- * 03-Mar-2005 BJD Ensured that bast-cpld.h is included2727- * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA2828- * 14-Mar-2005 BJD Updated for __iomem changes2929- * 22-Jun-2005 BJD Added DM9000 platform information3030- * 28-Jun-2005 BJD Moved pm functionality out to common code3131- * 17-Jul-2005 BJD Changed to platform device for SuperIO 16550s3232- * 25-Jul-2005 BJD Removed ASIX static mappings3333- * 27-Jul-2005 BJD Ensure maximum frequency of i2c bus3434- * 20-Sep-2005 BJD Added static to non-exported items3535- * 26-Oct-2005 BJD Added FB platform data3611*/37123813#include <linux/kernel.h>
-17
arch/arm/mach-s3c2410/mach-h1940.c
···99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111 *1212- * Modifications:1313- * 16-May-2003 BJD Created initial version1414- * 16-Aug-2003 BJD Fixed header files and copyright, added URL1515- * 05-Sep-2003 BJD Moved to v2.6 kernel1616- * 06-Jan-2003 BJD Updates for <arch/map.h>1717- * 18-Jan-2003 BJD Added serial port configuration1818- * 17-Feb-2003 BJD Copied to mach-ipaq.c1919- * 21-Aug-2004 BJD Added struct s3c2410_board2020- * 04-Sep-2004 BJD Changed uart init, renamed ipaq_ -> h1940_2121- * 18-Oct-2004 BJD Updated new board structure name2222- * 04-Nov-2004 BJD Change for new serial clock2323- * 04-Jan-2005 BJD Updated uart init call2424- * 10-Jan-2005 BJD Removed include of s3c2410.h2525- * 14-Jan-2005 BJD Added clock init2626- * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA2727- * 20-Sep-2005 BJD Added static to non-exported items2828- * 26-Oct-2005 BJD Changed name of fb init call2912*/30133114#include <linux/kernel.h>
-9
arch/arm/mach-s3c2410/mach-rx3715.c
···99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111 *1212- * Modifications:1313- * 16-Sep-2004 BJD Copied from mach-h1940.c1414- * 25-Oct-2004 BJD Updates for 2.6.10-rc11515- * 10-Jan-2005 BJD Removed include of s3c2410.h s3c2440.h1616- * 14-Jan-2005 BJD Added new clock init1717- * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA1818- * 14-Mar-2005 BJD Fixed __iomem warnings1919- * 20-Sep-2005 BJD Added static to non-exported items2020- * 31-Oct-2005 BJD Added LCD setup for framebuffer2112*/22132314#include <linux/kernel.h>
-4
arch/arm/mach-s3c2410/mach-smdk2410.c
···2727 * derived from linux/arch/arm/mach-s3c2410/mach-bast.c, written by2828 * Ben Dooks <ben@simtec.co.uk>2929 *3030- * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA3131- * 20-Sep-2005 BJD Added static to non-exported items3232- * 01-Apr-2006 BJD Moved init code to common smdk3333- *3430 ***********************************************************************/35313632#include <linux/kernel.h>
···1010 * it under the terms of the GNU General Public License version 2 as1111 * published by the Free Software Foundation.1212 *1313- * Modifications:1414- * 14-Sep-2004 BJD USB Power control1515- * 04-Sep-2004 BJD Added new uart init, and io init1616- * 21-Aug-2004 BJD Added struct s3c2410_board1717- * 06-Aug-2004 BJD Fixed call to time initialisation1818- * 05-Apr-2004 BJD Copied to make mach-vr1000.c1919- * 18-Oct-2004 BJD Updated board struct2020- * 04-Nov-2004 BJD Clock and serial configuration update2121- *2222- * 04-Jan-2005 BJD Updated uart init call2323- * 10-Jan-2005 BJD Removed include of s3c2410.h2424- * 14-Jan-2005 BJD Added clock init2525- * 15-Jan-2005 BJD Add serial port device definition2626- * 20-Jan-2005 BJD Use UPF_IOREMAP for ports2727- * 10-Feb-2005 BJD Added power-off capability2828- * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA2929- * 14-Mar-2006 BJD void __iomem fixes3030- * 22-Jun-2006 BJD Added DM9000 platform information3131- * 20-Sep-2005 BJD Added static to non-exported items3213*/33143415#include <linux/kernel.h>
+1-4
arch/arm/mach-s3c2410/s3c2400-gpio.c
···1717 * You should have received a copy of the GNU General Public License1818 * along with this program; if not, write to the Free Software1919 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA2020- *2121- * Changelog2222- * 15-Jan-2006 LCVR Splitted from gpio.c, adding support for the S3C24002323- */2020+*/24212522#include <linux/kernel.h>2623#include <linux/init.h>
-8
arch/arm/mach-s3c2410/s3c2410.h
···99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111 *1212- * Modifications:1313- * 18-Aug-2004 BJD Created initial version1414- * 20-Aug-2004 BJD Added s3c2410_board struct1515- * 04-Sep-2004 BJD Added s3c2410_init_uarts() call1616- * 17-Oct-2004 BJD Moved board out to cpu1717- * 04-Jan-2005 BJD Changed uart init1818- * 10-Jan-2005 BJD Removed timer to cpu.h, moved 2410 specific bits here1919- * 14-Jan-2005 BJD Added s3c2410_init_clocks call2012*/21132214#ifdef CONFIG_CPU_S3C2410
+130
arch/arm/mach-s3c2410/s3c2412-irq.c
···11+/* linux/arch/arm/mach-s3c2412/s3c2412-irq.c22+ *33+ * Copyright (c) 2006 Simtec Electronics44+ * Ben Dooks <ben@simtec.co.uk>55+ *66+ * This program is free software; you can redistribute it and/or modify77+ * it under the terms of the GNU General Public License as published by88+ * the Free Software Foundation; either version 2 of the License, or99+ * (at your option) any later version.1010+ *1111+ * This program is distributed in the hope that it will be useful,1212+ * but WITHOUT ANY WARRANTY; without even the implied warranty of1313+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the1414+ * GNU General Public License for more details.1515+ *1616+ * You should have received a copy of the GNU General Public License1717+ * along with this program; if not, write to the Free Software1818+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA1919+ *2020+*/2121+2222+#include <linux/init.h>2323+#include <linux/module.h>2424+#include <linux/interrupt.h>2525+#include <linux/ioport.h>2626+#include <linux/ptrace.h>2727+#include <linux/sysdev.h>2828+2929+#include <asm/hardware.h>3030+#include <asm/irq.h>3131+#include <asm/io.h>3232+3333+#include <asm/mach/irq.h>3434+3535+#include <asm/arch/regs-irq.h>3636+#include <asm/arch/regs-gpio.h>3737+3838+#include "cpu.h"3939+#include "irq.h"4040+4141+/* the s3c2412 changes the behaviour of IRQ_EINT0 through IRQ_EINT3 by4242+ * having them turn up in both the INT* and the EINT* registers. Whilst4343+ * both show the status, they both now need to be acked when the IRQs4444+ * go off.4545+*/4646+4747+static void4848+s3c2412_irq_mask(unsigned int irqno)4949+{5050+ unsigned long bitval = 1UL << (irqno - IRQ_EINT0);5151+ unsigned long mask;5252+5353+ mask = __raw_readl(S3C2410_INTMSK);5454+ __raw_writel(mask | bitval, S3C2410_INTMSK);5555+5656+ mask = __raw_readl(S3C2412_EINTMASK);5757+ __raw_writel(mask | bitval, S3C2412_EINTMASK);5858+}5959+6060+static inline void6161+s3c2412_irq_ack(unsigned int irqno)6262+{6363+ unsigned long bitval = 1UL << (irqno - IRQ_EINT0);6464+6565+ __raw_writel(bitval, S3C2412_EINTPEND);6666+ __raw_writel(bitval, S3C2410_SRCPND);6767+ __raw_writel(bitval, S3C2410_INTPND);6868+}6969+7070+static inline void7171+s3c2412_irq_maskack(unsigned int irqno)7272+{7373+ unsigned long bitval = 1UL << (irqno - IRQ_EINT0);7474+ unsigned long mask;7575+7676+ mask = __raw_readl(S3C2410_INTMSK);7777+ __raw_writel(mask|bitval, S3C2410_INTMSK);7878+7979+ mask = __raw_readl(S3C2412_EINTMASK);8080+ __raw_writel(mask | bitval, S3C2412_EINTMASK);8181+8282+ __raw_writel(bitval, S3C2412_EINTPEND);8383+ __raw_writel(bitval, S3C2410_SRCPND);8484+ __raw_writel(bitval, S3C2410_INTPND);8585+}8686+8787+static void8888+s3c2412_irq_unmask(unsigned int irqno)8989+{9090+ unsigned long bitval = 1UL << (irqno - IRQ_EINT0);9191+ unsigned long mask;9292+9393+ mask = __raw_readl(S3C2412_EINTMASK);9494+ __raw_writel(mask & ~bitval, S3C2412_EINTMASK);9595+9696+ mask = __raw_readl(S3C2410_INTMSK);9797+ __raw_writel(mask & ~bitval, S3C2410_INTMSK);9898+}9999+100100+static struct irqchip s3c2412_irq_eint0t4 = {101101+ .ack = s3c2412_irq_ack,102102+ .mask = s3c2412_irq_mask,103103+ .unmask = s3c2412_irq_unmask,104104+ .set_wake = s3c_irq_wake,105105+ .set_type = s3c_irqext_type,106106+};107107+108108+static int s3c2412_irq_add(struct sys_device *sysdev)109109+{110110+ unsigned int irqno;111111+112112+ for (irqno = IRQ_EINT0; irqno <= IRQ_EINT3; irqno++) {113113+ set_irq_chip(irqno, &s3c2412_irq_eint0t4);114114+ set_irq_handler(irqno, do_edge_IRQ);115115+ set_irq_flags(irqno, IRQF_VALID);116116+ }117117+118118+ return 0;119119+}120120+121121+static struct sysdev_driver s3c2412_irq_driver = {122122+ .add = s3c2412_irq_add,123123+};124124+125125+static int s3c2412_irq_init(void)126126+{127127+ return sysdev_driver_register(&s3c2412_sysclass, &s3c2412_irq_driver);128128+}129129+130130+arch_initcall(s3c2412_irq_init);
-3
arch/arm/mach-s3c2410/s3c2440-irq.c
···1717 * along with this program; if not, write to the Free Software1818 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA1919 *2020- * Changelog:2121- * 25-Jul-2005 BJD Split from irq.c2222- *2320*/24212522#include <linux/init.h>
+6-6
arch/arm/mach-s3c2410/s3c244x-irq.c
···1717 * along with this program; if not, write to the Free Software1818 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA1919 *2020- * Changelog:2121- * 25-Jul-2005 BJD Split from irq.c2222- *2320*/24212522#include <linux/init.h>···119122 return 0;120123}121124122122-static struct sysdev_driver s3c244x_irq_driver = {125125+static struct sysdev_driver s3c2440_irq_driver = {123126 .add = s3c244x_irq_add,124127};125128126129static int s3c2440_irq_init(void)127130{128128- return sysdev_driver_register(&s3c2440_sysclass, &s3c244x_irq_driver);131131+ return sysdev_driver_register(&s3c2440_sysclass, &s3c2440_irq_driver);129132}130133131134arch_initcall(s3c2440_irq_init);132135136136+static struct sysdev_driver s3c2442_irq_driver = {137137+ .add = s3c244x_irq_add,138138+};133139134140static int s3c2442_irq_init(void)135141{136136- return sysdev_driver_register(&s3c2442_sysclass, &s3c244x_irq_driver);142142+ return sysdev_driver_register(&s3c2442_sysclass, &s3c2442_irq_driver);137143}138144139145arch_initcall(s3c2442_irq_init);
···32323333#define TICK_SIZE (tick_nsec / 1000)34343535-extern unsigned long wall_jiffies;3636-3735unsigned long __nongprelbss __clkin_clock_speed_HZ;3836unsigned long __nongprelbss __ext_bus_clock_speed_HZ;3937unsigned long __nongprelbss __res_bus_clock_speed_HZ;···141143142144 time_divisor_init();143145}144144-145145-/*146146- * This version of gettimeofday has near microsecond resolution.147147- */148148-void do_gettimeofday(struct timeval *tv)149149-{150150- unsigned long seq;151151- unsigned long usec, sec;152152- unsigned long max_ntp_tick;153153-154154- do {155155- unsigned long lost;156156-157157- seq = read_seqbegin(&xtime_lock);158158-159159- usec = 0;160160- lost = jiffies - wall_jiffies;161161-162162- /*163163- * If time_adjust is negative then NTP is slowing the clock164164- * so make sure not to go into next possible interval.165165- * Better to lose some accuracy than have time go backwards..166166- */167167- if (unlikely(time_adjust < 0)) {168168- max_ntp_tick = (USEC_PER_SEC / HZ) - tickadj;169169- usec = min(usec, max_ntp_tick);170170-171171- if (lost)172172- usec += lost * max_ntp_tick;173173- }174174- else if (unlikely(lost))175175- usec += lost * (USEC_PER_SEC / HZ);176176-177177- sec = xtime.tv_sec;178178- usec += (xtime.tv_nsec / 1000);179179- } while (read_seqretry(&xtime_lock, seq));180180-181181- while (usec >= 1000000) {182182- usec -= 1000000;183183- sec++;184184- }185185-186186- tv->tv_sec = sec;187187- tv->tv_usec = usec;188188-}189189-190190-EXPORT_SYMBOL(do_gettimeofday);191191-192192-int do_settimeofday(struct timespec *tv)193193-{194194- time_t wtm_sec, sec = tv->tv_sec;195195- long wtm_nsec, nsec = tv->tv_nsec;196196-197197- if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC)198198- return -EINVAL;199199-200200- write_seqlock_irq(&xtime_lock);201201- /*202202- * This is revolting. We need to set "xtime" correctly. However, the203203- * value in this location is the value at the most recent update of204204- * wall time. Discover what correction gettimeofday() would have205205- * made, and then undo it!206206- */207207- nsec -= 0 * NSEC_PER_USEC;208208- nsec -= (jiffies - wall_jiffies) * TICK_NSEC;209209-210210- wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec);211211- wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec);212212-213213- set_normalized_timespec(&xtime, sec, nsec);214214- set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec);215215-216216- ntp_clear();217217- write_sequnlock_irq(&xtime_lock);218218- clock_was_set();219219- return 0;220220-}221221-222222-EXPORT_SYMBOL(do_settimeofday);223146224147/*225148 * Scheduler clock - returns current time in nanosec units.
···197197 ;;198198 srlz.i199199 ;;200200+ {201201+ flushrs // must be first insn in group202202+ srlz.i203203+ }204204+ ;;200205 /*201206 * Save the region registers, predicate before they get clobbered202207 */
+3-1
arch/ia64/kernel/perfmon.c
···49364936 if (likely(ctx)) {49374937 DPRINT(("context unlocked\n"));49384938 UNPROTECT_CTX(ctx, flags);49394939- fput(file);49404939 }4941494049424941 /* copy argument back to user, if needed */49434942 if (call_made && PFM_CMD_RW_ARG(cmd) && copy_to_user(arg, args_k, base_sz*count)) ret = -EFAULT;4944494349454944error_args:49454945+ if (file)49464946+ fput(file);49474947+49464948 kfree(args_k);4947494949484950 DPRINT(("cmd=%s ret=%ld\n", PFM_CMD_NAME(cmd), ret));
+16-12
arch/ia64/kernel/sys_ia64.c
···163163 return retval;164164}165165166166+int ia64_mmap_check(unsigned long addr, unsigned long len,167167+ unsigned long flags)168168+{169169+ unsigned long roff;170170+171171+ /*172172+ * Don't permit mappings into unmapped space, the virtual page table173173+ * of a region, or across a region boundary. Note: RGN_MAP_LIMIT is174174+ * equal to 2^n-PAGE_SIZE (for some integer n <= 61) and len > 0.175175+ */176176+ roff = REGION_OFFSET(addr);177177+ if ((len > RGN_MAP_LIMIT) || (roff > (RGN_MAP_LIMIT - len)))178178+ return -EINVAL;179179+ return 0;180180+}181181+166182static inline unsigned long167183do_mmap2 (unsigned long addr, unsigned long len, int prot, int flags, int fd, unsigned long pgoff)168184{169169- unsigned long roff;170185 struct file *file = NULL;171186172187 flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);···199184 /* Careful about overflows.. */200185 len = PAGE_ALIGN(len);201186 if (!len || len > TASK_SIZE) {202202- addr = -EINVAL;203203- goto out;204204- }205205-206206- /*207207- * Don't permit mappings into unmapped space, the virtual page table of a region,208208- * or across a region boundary. Note: RGN_MAP_LIMIT is equal to 2^n-PAGE_SIZE209209- * (for some integer n <= 61) and len > 0.210210- */211211- roff = REGION_OFFSET(addr);212212- if ((len > RGN_MAP_LIMIT) || (roff > (RGN_MAP_LIMIT - len))) {213187 addr = -EINVAL;214188 goto out;215189 }
+1-1
arch/ia64/sn/kernel/setup.c
···565565 * Also sets up a few fields in the nodepda. Also known as566566 * platform_cpu_init() by the ia64 machvec code.567567 */568568-void __init sn_cpu_init(void)568568+void __cpuinit sn_cpu_init(void)569569{570570 int cpuid;571571 int cpuphyid;
···9191 int dma_allocated;92929393 unsigned char actual_bus_width;9494+9595+ int prev_cmd_code;9496};95979698#define IMXMCI_PEND_IRQ_b 0···250248 * partial FIFO fills and reads. The length has to be rounded up to burst size multiple.251249 * This is required for SCR read at least.252250 */253253- if (datasz < 64) {251251+ if (datasz < 512) {254252 host->dma_size = datasz;255253 if (data->flags & MMC_DATA_READ) {256254 host->dma_dir = DMA_FROM_DEVICE;257255258256 /* Hack to enable read SCR */259259- if(datasz < 16) {260260- MMC_NOB = 1;261261- MMC_BLK_LEN = 16;262262- }257257+ MMC_NOB = 1;258258+ MMC_BLK_LEN = 512;263259 } else {264260 host->dma_dir = DMA_TO_DEVICE;265261 }···409409410410 spin_unlock_irqrestore(&host->lock, flags);411411412412+ if(req && req->cmd)413413+ host->prev_cmd_code = req->cmd->opcode;414414+412415 host->req = NULL;413416 host->cmd = NULL;414417 host->data = NULL;···556553{557554 int i;558555 int burst_len;559559- int flush_len;560556 int trans_done = 0;561557 unsigned int stat = *pstat;562558···568566 dev_dbg(mmc_dev(host->mmc), "imxmci_cpu_driven_data running STATUS = 0x%x\n",569567 stat);570568569569+ udelay(20); /* required for clocks < 8MHz*/570570+571571 if(host->dma_dir == DMA_FROM_DEVICE) {572572 imxmci_busy_wait_for_status(host, &stat,573573 STATUS_APPL_BUFF_FF | STATUS_DATA_TRANS_DONE,574574- 20, "imxmci_cpu_driven_data read");574574+ 50, "imxmci_cpu_driven_data read");575575576576 while((stat & (STATUS_APPL_BUFF_FF | STATUS_DATA_TRANS_DONE)) &&577577- (host->data_cnt < host->dma_size)) {578578- if(burst_len >= host->dma_size - host->data_cnt) {579579- flush_len = burst_len;580580- burst_len = host->dma_size - host->data_cnt;581581- flush_len -= burst_len;582582- host->data_cnt = host->dma_size;583583- trans_done = 1;584584- } else {585585- flush_len = 0;586586- host->data_cnt += burst_len;587587- }577577+ (host->data_cnt < 512)) {578578+579579+ udelay(20); /* required for clocks < 8MHz*/588580589581 for(i = burst_len; i>=2 ; i-=2) {590590- *(host->data_ptr++) = MMC_BUFFER_ACCESS;591591- udelay(20); /* required for clocks < 8MHz*/582582+ u16 data;583583+ data = MMC_BUFFER_ACCESS;584584+ udelay(10); /* required for clocks < 8MHz*/585585+ if(host->data_cnt+2 <= host->dma_size) {586586+ *(host->data_ptr++) = data;587587+ } else {588588+ if(host->data_cnt < host->dma_size)589589+ *(u8*)(host->data_ptr) = data;590590+ }591591+ host->data_cnt += 2;592592 }593593-594594- if(i == 1)595595- *(u8*)(host->data_ptr) = MMC_BUFFER_ACCESS;596593597594 stat = MMC_STATUS;598595599599- /* Flush extra bytes from FIFO */600600- while(flush_len && !(stat & STATUS_DATA_TRANS_DONE)){601601- i = MMC_BUFFER_ACCESS;602602- stat = MMC_STATUS;603603- stat &= ~STATUS_CRC_READ_ERR; /* Stupid but required there */604604- }605605-606606- dev_dbg(mmc_dev(host->mmc), "imxmci_cpu_driven_data read burst %d STATUS = 0x%x\n",607607- burst_len, stat);596596+ dev_dbg(mmc_dev(host->mmc), "imxmci_cpu_driven_data read %d burst %d STATUS = 0x%x\n",597597+ host->data_cnt, burst_len, stat);608598 }599599+600600+ if((stat & STATUS_DATA_TRANS_DONE) && (host->data_cnt >= 512))601601+ trans_done = 1;602602+603603+ if(host->dma_size & 0x1ff)604604+ stat &= ~STATUS_CRC_READ_ERR;605605+609606 } else {610607 imxmci_busy_wait_for_status(host, &stat,611608 STATUS_APPL_BUFF_FE,···693692 what, stat, MMC_INT_MASK);694693 dev_err(mmc_dev(host->mmc), "CMD_DAT_CONT = 0x%04x, MMC_BLK_LEN = 0x%04x, MMC_NOB = 0x%04x, DMA_CCR = 0x%08x\n",695694 MMC_CMD_DAT_CONT, MMC_BLK_LEN, MMC_NOB, CCR(host->dma));696696- dev_err(mmc_dev(host->mmc), "CMD%d, bus %d-bit, dma_size = 0x%x\n",697697- host->cmd?host->cmd->opcode:0, 1<<host->actual_bus_width, host->dma_size);695695+ dev_err(mmc_dev(host->mmc), "CMD%d, prevCMD%d, bus %d-bit, dma_size = 0x%x\n",696696+ host->cmd?host->cmd->opcode:0, host->prev_cmd_code, 1<<host->actual_bus_width, host->dma_size);698697 }699698700699 if(!host->present || timeout)
+51-4
drivers/mmc/mmc.c
···247247248248EXPORT_SYMBOL(mmc_wait_for_app_cmd);249249250250+/**251251+ * mmc_set_data_timeout - set the timeout for a data command252252+ * @data: data phase for command253253+ * @card: the MMC card associated with the data transfer254254+ * @write: flag to differentiate reads from writes255255+ */256256+void mmc_set_data_timeout(struct mmc_data *data, const struct mmc_card *card,257257+ int write)258258+{259259+ unsigned int mult;260260+261261+ /*262262+ * SD cards use a 100 multiplier rather than 10263263+ */264264+ mult = mmc_card_sd(card) ? 100 : 10;265265+266266+ /*267267+ * Scale up the multiplier (and therefore the timeout) by268268+ * the r2w factor for writes.269269+ */270270+ if (write)271271+ mult <<= card->csd.r2w_factor;272272+273273+ data->timeout_ns = card->csd.tacc_ns * mult;274274+ data->timeout_clks = card->csd.tacc_clks * mult;275275+276276+ /*277277+ * SD cards also have an upper limit on the timeout.278278+ */279279+ if (mmc_card_sd(card)) {280280+ unsigned int timeout_us, limit_us;281281+282282+ timeout_us = data->timeout_ns / 1000;283283+ timeout_us += data->timeout_clks * 1000 /284284+ (card->host->ios.clock / 1000);285285+286286+ if (write)287287+ limit_us = 250000;288288+ else289289+ limit_us = 100000;290290+291291+ if (timeout_us > limit_us) {292292+ data->timeout_ns = limit_us * 1000;293293+ data->timeout_clks = 0;294294+ }295295+ }296296+}297297+EXPORT_SYMBOL(mmc_set_data_timeout);298298+250299static int mmc_select_card(struct mmc_host *host, struct mmc_card *card);251300252301/**···957908{958909 int err;959910 struct mmc_card *card;960960-961911 struct mmc_request mrq;962912 struct mmc_command cmd;963913 struct mmc_data data;964964-965914 struct scatterlist sg;966915967916 list_for_each_entry(card, &host->cards, node) {···994947995948 memset(&data, 0, sizeof(struct mmc_data));996949997997- data.timeout_ns = card->csd.tacc_ns * 10;998998- data.timeout_clks = card->csd.tacc_clks * 10;950950+ mmc_set_data_timeout(&data, card, 0);951951+999952 data.blksz_bits = 3;1000953 data.blksz = 1 << 3;1001954 data.blocks = 1;
+7-53
drivers/mmc/mmc_block.c
···3030#include <linux/mutex.h>31313232#include <linux/mmc/card.h>3333+#include <linux/mmc/host.h>3334#include <linux/mmc/protocol.h>34353536#include <asm/system.h>···172171173172 brq.cmd.arg = req->sector << 9;174173 brq.cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC;175175- brq.data.timeout_ns = card->csd.tacc_ns * 10;176176- brq.data.timeout_clks = card->csd.tacc_clks * 10;177174 brq.data.blksz_bits = md->block_bits;178175 brq.data.blksz = 1 << md->block_bits;179176 brq.data.blocks = req->nr_sectors >> (md->block_bits - 9);180177 brq.stop.opcode = MMC_STOP_TRANSMISSION;181178 brq.stop.arg = 0;182179 brq.stop.flags = MMC_RSP_R1B | MMC_CMD_AC;180180+181181+ mmc_set_data_timeout(&brq.data, card, rq_data_dir(req) != READ);183182184183 if (rq_data_dir(req) == READ) {185184 brq.cmd.opcode = brq.data.blocks > 1 ? MMC_READ_MULTIPLE_BLOCK : MMC_READ_SINGLE_BLOCK;···188187 brq.cmd.opcode = MMC_WRITE_BLOCK;189188 brq.data.flags |= MMC_DATA_WRITE;190189 brq.data.blocks = 1;191191-192192- /*193193- * Scale up the timeout by the r2w factor194194- */195195- brq.data.timeout_ns <<= card->csd.r2w_factor;196196- brq.data.timeout_clks <<= card->csd.r2w_factor;197190 }198191199192 if (brq.data.blocks > 1) {···319324 md->read_only = mmc_blk_readonly(card);320325321326 /*322322- * Figure out a workable block size. MMC cards have:323323- * - two block sizes, one for read and one for write.324324- * - may support partial reads and/or writes325325- * (allows block sizes smaller than specified)327327+ * Both SD and MMC specifications state (although a bit328328+ * unclearly in the MMC case) that a block size of 512329329+ * bytes must always be supported by the card.326330 */327327- md->block_bits = card->csd.read_blkbits;328328- if (card->csd.write_blkbits != card->csd.read_blkbits) {329329- if (card->csd.write_blkbits < card->csd.read_blkbits &&330330- card->csd.read_partial) {331331- /*332332- * write block size is smaller than read block333333- * size, but we support partial reads, so choose334334- * the smaller write block size.335335- */336336- md->block_bits = card->csd.write_blkbits;337337- } else if (card->csd.write_blkbits > card->csd.read_blkbits &&338338- card->csd.write_partial) {339339- /*340340- * read block size is smaller than write block341341- * size, but we support partial writes. Use read342342- * block size.343343- */344344- } else {345345- /*346346- * We don't support this configuration for writes.347347- */348348- printk(KERN_ERR "%s: unable to select block size for "349349- "writing (rb%u wb%u rp%u wp%u)\n",350350- mmc_card_id(card),351351- 1 << card->csd.read_blkbits,352352- 1 << card->csd.write_blkbits,353353- card->csd.read_partial,354354- card->csd.write_partial);355355- md->read_only = 1;356356- }357357- }358358-359359- /*360360- * Refuse to allow block sizes smaller than 512 bytes.361361- */362362- if (md->block_bits < 9) {363363- printk(KERN_ERR "%s: unable to support block size %u\n",364364- mmc_card_id(card), 1 << md->block_bits);365365- ret = -EINVAL;366366- goto err_kfree;367367- }331331+ md->block_bits = 9;368332369333 md->disk = alloc_disk(1 << MMC_SHIFT);370334 if (md->disk == NULL) {
+1-1
drivers/net/Kconfig
···23932393 you will need a newer firmware image.23942394 You may get this image or more information, at:2395239523962396- <http://www.myri.com/Myri-10G/>23962396+ <http://www.myri.com/scs/download-Myri10GE.html>2397239723982398 To compile this driver as a module, choose M here and read23992399 <file:Documentation/networking/net-modules.txt>. The module
+2-2
drivers/net/dm9000.c
···377377 kfree(db->data_req);378378 }379379380380- if (db->addr_res != NULL) {381381- release_resource(db->addr_res);380380+ if (db->addr_req != NULL) {381381+ release_resource(db->addr_req);382382 kfree(db->addr_req);383383 }384384}
···467467#define TESTO_VID 0x128D468468#define TESTO_USB_INTERFACE_PID 0x0001469469470470+/*471471+ * Gamma Scout (http://gamma-scout.com/). Submitted by rsc@runtux.com.472472+ */473473+#define FTDI_GAMMA_SCOUT_PID 0xD678 /* Gamma Scout online */474474+470475/* Commands */471476#define FTDI_SIO_RESET 0 /* Reset the port */472477#define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */
+7-4
fs/ext3/inode.c
···10091009 buffer_trace_init(&dummy.b_history);10101010 err = ext3_get_blocks_handle(handle, inode, block, 1,10111011 &dummy, create, 1);10121012- if (err == 1) {10121012+ /*10131013+ * ext3_get_blocks_handle() returns number of blocks10141014+ * mapped. 0 in case of a HOLE.10151015+ */10161016+ if (err > 0) {10171017+ if (err > 1)10181018+ WARN_ON(1);10131019 err = 0;10141014- } else if (err >= 0) {10151015- WARN_ON(1);10161016- err = -EIO;10171020 }10181021 *errp = err;10191022 if (!err && buffer_mapped(&dummy)) {
+14-36
fs/nfs/direct.c
···100100 return atomic_dec_and_test(&dreq->io_count);101101}102102103103-/*104104- * "size" is never larger than rsize or wsize.105105- */106106-static inline int nfs_direct_count_pages(unsigned long user_addr, size_t size)107107-{108108- int page_count;109109-110110- page_count = (user_addr + size + PAGE_SIZE - 1) >> PAGE_SHIFT;111111- page_count -= user_addr >> PAGE_SHIFT;112112- BUG_ON(page_count < 0);113113-114114- return page_count;115115-}116116-117117-static inline unsigned int nfs_max_pages(unsigned int size)118118-{119119- return (size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;120120-}121121-122103/**123104 * nfs_direct_IO - NFS address space operation for direct I/O124105 * @rw: direction (read or write)···257276 struct nfs_open_context *ctx = dreq->ctx;258277 struct inode *inode = ctx->dentry->d_inode;259278 size_t rsize = NFS_SERVER(inode)->rsize;260260- unsigned int rpages = nfs_max_pages(rsize);261279 unsigned int pgbase;262280 int result;263281 ssize_t started = 0;264282265283 get_dreq(dreq);266284267267- pgbase = user_addr & ~PAGE_MASK;268285 do {269286 struct nfs_read_data *data;270287 size_t bytes;271288289289+ pgbase = user_addr & ~PAGE_MASK;290290+ bytes = min(rsize,count);291291+272292 result = -ENOMEM;273273- data = nfs_readdata_alloc(rpages);293293+ data = nfs_readdata_alloc(pgbase + bytes);274294 if (unlikely(!data))275295 break;276296277277- bytes = rsize;278278- if (count < rsize)279279- bytes = count;280280-281281- data->npages = nfs_direct_count_pages(user_addr, bytes);282297 down_read(¤t->mm->mmap_sem);283298 result = get_user_pages(current, current->mm, user_addr,284299 data->npages, 1, 0, data->pagevec, NULL);···321344 started += bytes;322345 user_addr += bytes;323346 pos += bytes;347347+ /* FIXME: Remove this unnecessary math from final patch */324348 pgbase += bytes;325349 pgbase &= ~PAGE_MASK;350350+ BUG_ON(pgbase != (user_addr & ~PAGE_MASK));326351327352 count -= bytes;328353 } while (count != 0);···503524504525static void nfs_alloc_commit_data(struct nfs_direct_req *dreq)505526{506506- dreq->commit_data = nfs_commit_alloc(0);527527+ dreq->commit_data = nfs_commit_alloc();507528 if (dreq->commit_data != NULL)508529 dreq->commit_data->req = (struct nfs_page *) dreq;509530}···584605 struct nfs_open_context *ctx = dreq->ctx;585606 struct inode *inode = ctx->dentry->d_inode;586607 size_t wsize = NFS_SERVER(inode)->wsize;587587- unsigned int wpages = nfs_max_pages(wsize);588608 unsigned int pgbase;589609 int result;590610 ssize_t started = 0;591611592612 get_dreq(dreq);593613594594- pgbase = user_addr & ~PAGE_MASK;595614 do {596615 struct nfs_write_data *data;597616 size_t bytes;598617618618+ pgbase = user_addr & ~PAGE_MASK;619619+ bytes = min(wsize,count);620620+599621 result = -ENOMEM;600600- data = nfs_writedata_alloc(wpages);622622+ data = nfs_writedata_alloc(pgbase + bytes);601623 if (unlikely(!data))602624 break;603625604604- bytes = wsize;605605- if (count < wsize)606606- bytes = count;607607-608608- data->npages = nfs_direct_count_pages(user_addr, bytes);609626 down_read(¤t->mm->mmap_sem);610627 result = get_user_pages(current, current->mm, user_addr,611628 data->npages, 0, 0, data->pagevec, NULL);···651676 started += bytes;652677 user_addr += bytes;653678 pos += bytes;679679+680680+ /* FIXME: Remove this useless math from the final patch */654681 pgbase += bytes;655682 pgbase &= ~PAGE_MASK;683683+ BUG_ON(pgbase != (user_addr & ~PAGE_MASK));656684657685 count -= bytes;658686 } while (count != 0);
+13-11
fs/nfs/read.c
···43434444#define MIN_POOL_READ (32)45454646-struct nfs_read_data *nfs_readdata_alloc(unsigned int pagecount)4646+struct nfs_read_data *nfs_readdata_alloc(size_t len)4747{4848+ unsigned int pagecount = (len + PAGE_SIZE - 1) >> PAGE_SHIFT;4849 struct nfs_read_data *p = mempool_alloc(nfs_rdata_mempool, SLAB_NOFS);49505051 if (p) {5152 memset(p, 0, sizeof(*p));5253 INIT_LIST_HEAD(&p->pages);5454+ p->npages = pagecount;5355 if (pagecount <= ARRAY_SIZE(p->page_array))5456 p->pagevec = p->page_array;5557 else {···142140 int result;143141 struct nfs_read_data *rdata;144142145145- rdata = nfs_readdata_alloc(1);143143+ rdata = nfs_readdata_alloc(count);146144 if (!rdata)147145 return -ENOMEM;148146···338336 struct nfs_page *req = nfs_list_entry(head->next);339337 struct page *page = req->wb_page;340338 struct nfs_read_data *data;341341- unsigned int rsize = NFS_SERVER(inode)->rsize;342342- unsigned int nbytes, offset;339339+ size_t rsize = NFS_SERVER(inode)->rsize, nbytes;340340+ unsigned int offset;343341 int requests = 0;344342 LIST_HEAD(list);345343346344 nfs_list_remove_request(req);347345348346 nbytes = req->wb_bytes;349349- for(;;) {350350- data = nfs_readdata_alloc(1);347347+ do {348348+ size_t len = min(nbytes,rsize);349349+350350+ data = nfs_readdata_alloc(len);351351 if (!data)352352 goto out_bad;353353 INIT_LIST_HEAD(&data->pages);354354 list_add(&data->pages, &list);355355 requests++;356356- if (nbytes <= rsize)357357- break;358358- nbytes -= rsize;359359- }356356+ nbytes -= len;357357+ } while(nbytes != 0);360358 atomic_set(&req->wb_complete, requests);361359362360 ClearPageError(page);···404402 if (NFS_SERVER(inode)->rsize < PAGE_CACHE_SIZE)405403 return nfs_pagein_multi(head, inode);406404407407- data = nfs_readdata_alloc(NFS_SERVER(inode)->rpages);405405+ data = nfs_readdata_alloc(NFS_SERVER(inode)->rsize);408406 if (!data)409407 goto out_bad;410408
+15-22
fs/nfs/write.c
···90909191static DECLARE_WAIT_QUEUE_HEAD(nfs_write_congestion);92929393-struct nfs_write_data *nfs_commit_alloc(unsigned int pagecount)9393+struct nfs_write_data *nfs_commit_alloc(void)9494{9595 struct nfs_write_data *p = mempool_alloc(nfs_commit_mempool, SLAB_NOFS);96969797 if (p) {9898 memset(p, 0, sizeof(*p));9999 INIT_LIST_HEAD(&p->pages);100100- if (pagecount <= ARRAY_SIZE(p->page_array))101101- p->pagevec = p->page_array;102102- else {103103- p->pagevec = kcalloc(pagecount, sizeof(struct page *), GFP_NOFS);104104- if (!p->pagevec) {105105- mempool_free(p, nfs_commit_mempool);106106- p = NULL;107107- }108108- }109100 }110101 return p;111102}···108117 mempool_free(p, nfs_commit_mempool);109118}110119111111-struct nfs_write_data *nfs_writedata_alloc(unsigned int pagecount)120120+struct nfs_write_data *nfs_writedata_alloc(size_t len)112121{122122+ unsigned int pagecount = (len + PAGE_SIZE - 1) >> PAGE_SHIFT;113123 struct nfs_write_data *p = mempool_alloc(nfs_wdata_mempool, SLAB_NOFS);114124115125 if (p) {116126 memset(p, 0, sizeof(*p));117127 INIT_LIST_HEAD(&p->pages);128128+ p->npages = pagecount;118129 if (pagecount <= ARRAY_SIZE(p->page_array))119130 p->pagevec = p->page_array;120131 else {···201208 int result, written = 0;202209 struct nfs_write_data *wdata;203210204204- wdata = nfs_writedata_alloc(1);211211+ wdata = nfs_writedata_alloc(wsize);205212 if (!wdata)206213 return -ENOMEM;207214···992999 struct nfs_page *req = nfs_list_entry(head->next);9931000 struct page *page = req->wb_page;9941001 struct nfs_write_data *data;995995- unsigned int wsize = NFS_SERVER(inode)->wsize;996996- unsigned int nbytes, offset;10021002+ size_t wsize = NFS_SERVER(inode)->wsize, nbytes;10031003+ unsigned int offset;9971004 int requests = 0;9981005 LIST_HEAD(list);999100610001007 nfs_list_remove_request(req);1001100810021009 nbytes = req->wb_bytes;10031003- for (;;) {10041004- data = nfs_writedata_alloc(1);10101010+ do {10111011+ size_t len = min(nbytes, wsize);10121012+10131013+ data = nfs_writedata_alloc(len);10051014 if (!data)10061015 goto out_bad;10071016 list_add(&data->pages, &list);10081017 requests++;10091009- if (nbytes <= wsize)10101010- break;10111011- nbytes -= wsize;10121012- }10181018+ nbytes -= len;10191019+ } while (nbytes != 0);10131020 atomic_set(&req->wb_complete, requests);1014102110151022 ClearPageError(page);···10631070 struct nfs_write_data *data;10641071 unsigned int count;1065107210661066- data = nfs_writedata_alloc(NFS_SERVER(inode)->wpages);10731073+ data = nfs_writedata_alloc(NFS_SERVER(inode)->wsize);10671074 if (!data)10681075 goto out_bad;10691076···13711378 struct nfs_write_data *data;13721379 struct nfs_page *req;1373138013741374- data = nfs_commit_alloc(NFS_SERVER(inode)->wpages);13811381+ data = nfs_commit_alloc();1375138213761383 if (!data)13771384 goto out_bad;
+1
fs/super.c
···49495050/**5151 * alloc_super - create new superblock5252+ * @type: filesystem type superblock should belong to5253 *5354 * Allocates and initializes a new &struct super_block. alloc_super()5455 * returns a pointer new superblock or %NULL if allocation had failed.
-3
include/asm-arm/arch-s3c2410/anubis-cpld.h
···99 * This program is free software; you can redistribute it and/or modify1010 * it under the terms of the GNU General Public License version 2 as1111 * published by the Free Software Foundation.1212- *1313- * Changelog:1414- *1512*/16131714#ifndef __ASM_ARCH_ANUBISCPLD_H
+1-3
include/asm-arm/arch-s3c2410/anubis-irq.h
···99 * This program is free software; you can redistribute it and/or modify1010 * it under the terms of the GNU General Public License version 2 as1111 * published by the Free Software Foundation.1212- *1313- * Changelog:1414- */1212+*/15131614#ifndef __ASM_ARCH_ANUBISIRQ_H1715#define __ASM_ARCH_ANUBISIRQ_H
-2
include/asm-arm/arch-s3c2410/anubis-map.h
···99 * This program is free software; you can redistribute it and/or modify1010 * it under the terms of the GNU General Public License version 2 as1111 * published by the Free Software Foundation.1212- *1313- * Changelog:1412*/15131614/* needs arch/map.h including with this */
-4
include/asm-arm/arch-s3c2410/audio.h
···99 * This program is free software; you can redistribute it and/or modify1010 * it under the terms of the GNU General Public License version 2 as1111 * published by the Free Software Foundation.1212- *1313- * Changelog:1414- * 20-Nov-2004 BJD Created file1515- * 07-Mar-2005 BJD Added suspend/resume calls1612*/17131814#ifndef __ASM_ARCH_AUDIO_H
-5
include/asm-arm/arch-s3c2410/bast-cpld.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 25-May-2003 BJD Created file, added CTRL1 registers1414- * 30-Aug-2004 BJD Updated definitions from 2.4.26 port1515- * 30-Aug-2004 BJD Added CTRL3 and CTRL4 definitions1611*/17121813#ifndef __ASM_ARCH_BASTCPLD_H
+1-5
include/asm-arm/arch-s3c2410/bast-irq.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 14-Sep-2004 BJD Fixed IRQ_USBOC definition1414- * 06-Jan-2003 BJD Linux 2.6.0 version1515- */1111+*/16121713#ifndef __ASM_ARCH_BASTIRQ_H1814#define __ASM_ARCH_BASTIRQ_H
-4
include/asm-arm/arch-s3c2410/bast-map.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 06-Jan-2003 BJD Linux 2.6.0 version, moved bast specifics from arch/map.h1414- * 12-Mar-2004 BJD Fixed header include protection1511*/16121713/* needs arch/map.h including with this */
-3
include/asm-arm/arch-s3c2410/bast-pmu.h
···99 * This program is free software; you can redistribute it and/or modify1010 * it under the terms of the GNU General Public License version 2 as1111 * published by the Free Software Foundation.1212- *1313- * Changelog:1414- * 08-Oct-2003 BJD Initial creation1512*/16131714#ifndef __ASM_ARCH_BASTPMU_H
-3
include/asm-arm/arch-s3c2410/debug-macro.S
···1010 * This program is free software; you can redistribute it and/or modify1111 * it under the terms of the GNU General Public License version 2 as1212 * published by the Free Software Foundation.1313- *1414- * Modifications:1515- * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA1613*/17141815#include <asm/arch/map.h>
-7
include/asm-arm/arch-s3c2410/fb.h
···77 * This program is free software; you can redistribute it and/or modify88 * it under the terms of the GNU General Public License version 2 as99 * published by the Free Software Foundation.1010- *1111- *1212- * Changelog:1313- * 07-Sep-2004 RTP Created file1414- * 03-Nov-2004 BJD Updated and minor cleanups1515- * 03-Aug-2005 RTP Renamed to fb.h1616- * 26-Oct-2005 BJD Changed name of platdata init1710*/18111912#ifndef __ASM_ARM_FB_H
-10
include/asm-arm/arch-s3c2410/hardware.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 21-May-2003 BJD Created file1414- * 06-Jun-2003 BJD Added CPU frequency settings1515- * 03-Sep-2003 BJD Linux v2.6 support1616- * 12-Mar-2004 BJD Fixed include protection, fixed type of clock vars1717- * 14-Sep-2004 BJD Added misccr and getpin to gpio1818- * 01-Oct-2004 BJD Added the new gpio functions1919- * 16-Oct-2004 BJD Removed the clock variables2020- * 15-Jan-2006 LCVR Added s3c2400_gpio_getirq()2111*/22122313#ifndef __ASM_ARCH_HARDWARE_H
-4
include/asm-arm/arch-s3c2410/idle.h
···88 * published by the Free Software Foundation.99 *1010 * S3C2410 CPU Idle controls1111- *1212- * Changelog:1313- * 28-Oct-2004 BJD Initial version1414- *1511*/16121713#ifndef __ASM_ARCH_IDLE_H
-4
include/asm-arm/arch-s3c2410/iic.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 05-Oct-2004 BJD Created file1414- * 19-Oct-2004 BJD Updated for s3c24401511*/16121713#ifndef __ASM_ARCH_IIC_H
···66 * This program is free software; you can redistribute it and/or modify77 * it under the terms of the GNU General Public License version 2 as88 * published by the Free Software Foundation.99- *1010- * Changelog:1111- * 12-May-2003 BJD Created file1212- * 08-Jan-2003 BJD Linux 2.6.0 version, moved BAST bits out1313- * 12-Mar-2004 BJD Fixed bug in header protection1414- * 10-Feb-2005 BJD Added camera IRQ from guillaume.gourat@nexvision.tv1515- * 28-Feb-2005 BJD Updated s3c2440 IRQs1616- */99+*/171018111912#ifndef __ASM_ARCH_IRQS_H
-7
include/asm-arm/arch-s3c2410/map.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 12-May-2003 BJD Created file1414- * 06-Jan-2003 BJD Linux 2.6.0 version, moved bast specifics out1515- * 10-Feb-2005 BJD Added CAMIF definition from guillaume.gourat@nexvision.tv1616- * 10-Mar-2005 LCVR Added support to S3C2400, changed {VA,SZ} names1717- * 15-Jan-2006 LCVR Added S3C24XX_PA macros for common S3C24XX resources1811*/19122013#ifndef __ASM_ARCH_MAP_H
+1-13
include/asm-arm/arch-s3c2410/memory.h
···11-/*22- * linux/include/asm-arm/arch-s3c2410/memory.h33- *11+/* linux/include/asm-arm/arch-s3c2410/memory.h42 * from linux/include/asm-arm/arch-rpc/memory.h53 *64 * Copyright (C) 1996,1997,1998 Russell King.···68 * This program is free software; you can redistribute it and/or modify79 * it under the terms of the GNU General Public License version 2 as810 * published by the Free Software Foundation.99- *1010- * Changelog:1111- * 20-Oct-1996 RMK Created1212- * 31-Dec-1997 RMK Fixed definitions to reduce warnings1313- * 11-Jan-1998 RMK Uninlined to reduce hits on cache1414- * 08-Feb-1998 RMK Added __virt_to_bus and __bus_to_virt1515- * 21-Mar-1999 RMK Renamed to memory.h1616- * RMK Added TASK_SIZE and PAGE_OFFSET1717- * 05-Apr-2004 BJD Copied and altered for arch-s3c24101818- * 17-Mar-2005 LCVR Modified for S3C24001911*/20122113#ifndef __ASM_ARCH_MEMORY_H
-3
include/asm-arm/arch-s3c2410/nand.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 23-Sep-2004 BJD Created file1411*/15121613/* struct s3c2410_nand_set
-2
include/asm-arm/arch-s3c2410/osiris-map.h
···99 * This program is free software; you can redistribute it and/or modify1010 * it under the terms of the GNU General Public License version 2 as1111 * published by the Free Software Foundation.1212- *1313- * Changelog:1412*/15131614/* needs arch/map.h including with this */
-3
include/asm-arm/arch-s3c2410/regs-adc.h
···77 * published by the Free Software Foundation.88 *99 * S3C2410 ADC registers1010- *1111- * Changelog:1212- * 27-09-2004 SAH Created file1310*/14111512#ifndef __ASM_ARCH_REGS_ADC_H
-12
include/asm-arm/arch-s3c2410/regs-clock.h
···88 * published by the Free Software Foundation.99 *1010 * S3C2410 clock register definitions1111- *1212- * Changelog:1313- * 18-Aug-2004 Ben Dooks Added 2440 definitions1414- * 08-Aug-2004 Herbert P�tzl Added CLKCON definitions1515- * 19-06-2003 Ben Dooks Created file1616- * 12-03-2004 Ben Dooks Updated include protection1717- * 29-Sep-2004 Ben Dooks Fixed usage for assembly inclusion1818- * 10-Feb-2005 Ben Dooks Fixed CAMDIVN address (Guillaume Gourat)1919- * 10-Mar-2005 Lucas Villa Real Changed S3C2410_VA to S3C24XX_VA2020- * 27-Aug-2005 Ben Dooks Add clock-slow info2121- * 20-Oct-2005 Ben Dooks Fixed overflow in PLL (Guillaume Gourat)2222- * 20-Oct-2005 Ben Dooks Add masks for DCLK (Guillaume Gourat)2311*/24122513#ifndef __ASM_ARM_REGS_CLOCK
-15
include/asm-arm/arch-s3c2410/regs-gpio.h
···88 * published by the Free Software Foundation.99 *1010 * S3C2410 GPIO register definitions1111- *1212- * Changelog:1313- * 19-06-2003 BJD Created file1414- * 23-06-2003 BJD Updated GSTATUS registers1515- * 12-03-2004 BJD Updated include protection1616- * 20-07-2004 BJD Added GPIO pin numbers, added Port A definitions1717- * 04-10-2004 BJD Fixed number of bugs, added EXT IRQ filter defs1818- * 17-10-2004 BJD Added GSTATUS1 register definitions1919- * 18-11-2004 BJD Fixed definitions of GPE3, GPE4, GPE5 and GPE62020- * 18-11-2004 BJD Added S3C2440 AC97 controls2121- * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA2222- * 28-Mar-2005 LCVR Fixed definition of GPB102323- * 26-Oct-2005 BJD Added generic configuration types2424- * 27-Nov-2005 LCVR Added definitions to S3C2400 registers2525- * 15-Jan-2006 LCVR Written S3C24XX_GPIO_BASE() macro2611*/27122813
-4
include/asm-arm/arch-s3c2410/regs-gpioj.h
···88 * published by the Free Software Foundation.99 *1010 * S3C2440 GPIO J register definitions1111- *1212- * Changelog:1313- * 11-Aug-2004 BJD Created file1414- * 10-Feb-2005 BJD Fix GPJ12 definition (Guillaume Gourat)1511*/16121713
-4
include/asm-arm/arch-s3c2410/regs-iic.h
···88 * published by the Free Software Foundation.99 *1010 * S3C2410 I2C Controller1111- *1212- * Changelog:1313- * 03-Oct-2004 BJD Initial include for Linux1414- * 08-Nov-2004 BJD Added S3C2440 filter register1511*/16121713#ifndef __ASM_ARCH_REGS_IIC_H
+1-11
include/asm-arm/arch-s3c2410/regs-iis.h
···88 * published by the Free Software Foundation.99 *1010 * S3C2410 IIS register definition1111- *1212- * Changelog:1313- * 19-06-2003 BJD Created file1414- * 26-06-2003 BJD Finished off definitions for register addresses1515- * 12-03-2004 BJD Updated include protection1616- * 07-03-2005 BJD Added FIFO size flags and S3C2440 MPLL1717- * 05-04-2005 LCVR Added IISFCON definitions for the S3C24001818- * 18-07-2005 DA Change IISCON_MPLL to IISMOD_MPLL1919- * Correct IISMOD_256FS and IISMOD_384FS2020- * Add IISCON_PSCEN2121- */1111+*/22122313#ifndef __ASM_ARCH_REGS_IIS_H2414#define __ASM_ARCH_REGS_IIS_H
+1-8
include/asm-arm/arch-s3c2410/regs-irq.h
···66 * This program is free software; you can redistribute it and/or modify77 * it under the terms of the GNU General Public License version 2 as88 * published by the Free Software Foundation.99- *1010- *1111- *1212- * Changelog:1313- * 19-06-2003 BJD Created file1414- * 12-03-2004 BJD Updated include protection1515- * 10-03-2005 LCVR Changed S3C2410_VA to S3C24XX_VA1616- */99+*/171018111912#ifndef ___ASM_ARCH_REGS_IRQ_H
-8
include/asm-arm/arch-s3c2410/regs-lcd.h
···66 * This program is free software; you can redistribute it and/or modify77 * it under the terms of the GNU General Public License version 2 as88 * published by the Free Software Foundation.99- *1010- *1111- *1212- * Changelog:1313- * 12-06-2003 BJD Created file1414- * 26-06-2003 BJD Updated LCDCON register definitions1515- * 12-03-2004 BJD Updated include protection1616- * 10-03-2005 LCVR Changed S3C2410_VA to S3C24XX_VA179*/18101911
-6
include/asm-arm/arch-s3c2410/regs-mem.h
···88 * published by the Free Software Foundation.99 *1010 * S3C2410 Memory Control register definitions1111- *1212- * Changelog:1313- * 29-Sep-2004 BJD Initial include for Linux1414- * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA1515- * 04-Apr-2005 LCVR Added S3C2400 DRAM/BANKSIZE_MASK definitions1616- *1711*/18121913#ifndef __ASM_ARM_MEMREGS_H
-4
include/asm-arm/arch-s3c2410/regs-nand.h
···88 * published by the Free Software Foundation.99 *1010 * S3C2410 NAND register definitions1111- *1212- * Changelog:1313- * 18-Aug-2004 BJD Copied file from 2.4 and updated1414- * 01-May-2005 BJD Added definitions for s3c2440 controller1511*/16121713#ifndef __ASM_ARM_REGS_NAND
-5
include/asm-arm/arch-s3c2410/regs-rtc.h
···88 * published by the Free Software Foundation.99 *1010 * S3C2410 Internal RTC register definition1111- *1212- * Changelog:1313- * 19-06-2003 BJD Created file1414- * 12-03-2004 BJD Updated include protection1515- * 15-01-2005 LCVR Changed S3C2410_VA to S3C24XX_VA (s3c2400 support)1611*/17121813#ifndef __ASM_ARCH_REGS_RTC_H
-5
include/asm-arm/arch-s3c2410/regs-sdi.h
···88 * published by the Free Software Foundation.99 *1010 * S3C2410 MMC/SDIO register definitions1111- *1212- * Changelog:1313- * 18-Aug-2004 Ben Dooks Created initial file1414- * 29-Nov-2004 Koen Martens Added some missing defines, fixed duplicates1515- * 29-Nov-2004 Ben Dooks Updated Koen's patch1611*/17121813#ifndef __ASM_ARM_REGS_SDI
+1-4
include/asm-arm/arch-s3c2410/regs-serial.h
···2727 * You should have received a copy of the GNU General Public License2828 * along with this program; if not, write to the Free Software2929 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA3030- *3131- * Modifications:3232- * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA (s3c2400 support)3333- */3030+*/34313532#ifndef __ASM_ARM_REGS_SERIAL_H3633#define __ASM_ARM_REGS_SERIAL_H
+1-7
include/asm-arm/arch-s3c2410/regs-spi.h
···77 * published by the Free Software Foundation.88 *99 * S3C2410 SPI register definition1010- *1111- * Changelog:1212- * 20-04-2004 KF Created file1313- * 04-10-2004 BJD Removed VA address (no longer mapped)1414- * tidied file for submission1515- * 03-04-2005 LCVR Added S3C2400_SPPIN_nCS definition1616- */1010+*/17111812#ifndef __ASM_ARCH_REGS_SPI_H1913#define __ASM_ARCH_REGS_SPI_H
-7
include/asm-arm/arch-s3c2410/regs-timer.h
···88 * published by the Free Software Foundation.99 *1010 * S3C2410 Timer configuration1111- *1212- * Changelog:1313- * 05-06-2003 BJD Created file1414- * 26-06-2003 BJD Added more timer definitions to mux / control1515- * 12-03-2004 BJD Updated include protection1616- * 10-02-2005 BJD Added S3C2410_TCFG1_MUX4_SHIFT (Guillaume Gourat)1717- * 10-03-2005 LCVR Changed S3C2410_VA to S3C24XX_VA1811*/19122013
+1-7
include/asm-arm/arch-s3c2410/regs-udc.h
···66 * modify it under the terms of the GNU General Public License as77 * published by the Free Software Foundation; either version 2 of88 * the License, or (at your option) any later version.99- *1010- * Changelog:1111- * 01-08-2004 Initial creation1212- * 12-09-2004 Cleanup for submission1313- * 24-10-2004 Fixed S3C2410_UDC_MAXP_REG definition1414- * 10-03-2005 Changed S3C2410_VA to S3C24XX_VA1515- */99+*/16101711#ifndef __ASM_ARCH_REGS_UDC_H1812#define __ASM_ARCH_REGS_UDC_H
+1-6
include/asm-arm/arch-s3c2410/regs-watchdog.h
···11-/* linux/include/asm/arch-s3c2410/regs0watchdog.h11+/* linux/include/asm/arch-s3c2410/regs-watchdog.h22 *33 * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk>44 * http://www.simtec.co.uk/products/SWLINUX/···88 * published by the Free Software Foundation.99 *1010 * S3C2410 Watchdog timer control1111- *1212- * Changelog:1313- * 21-06-2003 BJD Created file1414- * 12-03-2004 BJD Updated include protection1515- * 10-03-2005 LCVR Changed S3C2410_VA to S3C24XX_VA1611*/17121813
+1-8
include/asm-arm/arch-s3c2410/system.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 12-May-2003 BJD Created file1414- * 14-May-2003 BJD Removed idle to aid debugging1515- * 12-Jun-2003 BJD Added reset via watchdog1616- * 04-Sep-2003 BJD Moved to v2.61717- * 28-Oct-2004 BJD Added over-ride for idle, and fixed reset panic()1818- */1111+*/19122013#include <asm/hardware.h>2114#include <asm/io.h>
-6
include/asm-arm/arch-s3c2410/timex.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 02-Sep-2003 BJD Created file1414- * 05-Jan-2004 BJD Updated for Linux 2.6.01515- * 22-Nov-2004 BJD Fixed CLOCK_TICK_RATE1616- * 10-Jan-2004 BJD Removed s3c2410_clock_tick_rate1711*/18121913#ifndef __ASM_ARCH_TIMEX_H
-9
include/asm-arm/arch-s3c2410/uncompress.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 22-May-2003 BJD Created1414- * 08-Sep-2003 BJD Moved to linux v2.61515- * 12-Mar-2004 BJD Updated header protection1616- * 12-Oct-2004 BJD Take account of debug uart configuration1717- * 15-Nov-2004 BJD Fixed uart configuration1818- * 22-Feb-2005 BJD Added watchdog to uncompress1919- * 04-Apr-2005 LCVR Added support to S3C2400 (no cpuid at GSTATUS1)2011*/21122213#ifndef __ASM_ARCH_UNCOMPRESS_H
-5
include/asm-arm/arch-s3c2410/usb-control.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 11-Sep-2004 BJD Created file1414- * 21-Sep-2004 BJD Updated port info1515- * 09-Aug-2005 BJD Renamed s3c2410_report_oc s3c2410_usb_report_oc1611*/17121813#ifndef __ASM_ARCH_USBCONTROL_H
+1-5
include/asm-arm/arch-s3c2410/vmalloc.h
···1010 * published by the Free Software Foundation.1111 *1212 * S3C2410 vmalloc definition1313- *1414- * Changelog:1515- * 12-Mar-2004 BJD Fixed header, added include protection1616- * 12=Mar-2004 BJD Fixed VMALLOC_END definitions1717- */1313+*/18141915#ifndef __ASM_ARCH_VMALLOC_H2016#define __ASM_ARCH_VMALLOC_H
-4
include/asm-arm/arch-s3c2410/vr1000-cpld.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 25-May-2003 BJD Created file, added CTRL1 registers1414- * 19-Mar-2004 BJD Added VR1000 CPLD definitions1511*/16121713#ifndef __ASM_ARCH_VR1000CPLD_H
+1-5
include/asm-arm/arch-s3c2410/vr1000-irq.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 06-Jan-2003 BJD Linux 2.6.0 version1414- * 19-Mar-2004 BJD Updates for VR10001515- */1111+*/16121713#ifndef __ASM_ARCH_VR1000IRQ_H1814#define __ASM_ARCH_VR1000IRQ_H
-6
include/asm-arm/arch-s3c2410/vr1000-map.h
···88 * This program is free software; you can redistribute it and/or modify99 * it under the terms of the GNU General Public License version 2 as1010 * published by the Free Software Foundation.1111- *1212- * Changelog:1313- * 06-Jan-2003 BJD Linux 2.6.0 version, split specifics from arch/map.h1414- * 12-Mar-2004 BJD Fixed header include protection1515- * 19-Mar-2004 BJD Copied to VR1000 machine headers.1616- * 19-Jan-2005 BJD Updated map definitions1711*/18121913/* needs arch/map.h including with this */
+1-1
include/asm-arm/spinlock.h
···201201202202static inline int __raw_read_trylock(raw_rwlock_t *rw)203203{204204- unsigned long tmp tmp2 = 1;204204+ unsigned long tmp, tmp2 = 1;205205206206 __asm__ __volatile__(207207"1: ldrex %0, [%2]\n"
···11+#include <asm-generic/audit_dir_write.h>22+__NR_acct,33+__NR_swapon,44+__NR_quotactl,55+__NR_truncate,66+#ifdef __NR_truncate6477+__NR_truncate64,88+#endif99+#ifdef __NR_bind1010+__NR_bind, /* bind can affect fs object only in one way... */1111+#endif
···132132#define AUDIT_CLASS_DIR_WRITE_32 1133133#define AUDIT_CLASS_CHATTR 2134134#define AUDIT_CLASS_CHATTR_32 3135135+#define AUDIT_CLASS_READ 4136136+#define AUDIT_CLASS_READ_32 5137137+#define AUDIT_CLASS_WRITE 6138138+#define AUDIT_CLASS_WRITE_32 7135139136140/* This bitmask is used to validate user input. It represents all bits that137141 * are currently used in an audit field constant understood by the kernel.···181177#define AUDIT_EXIT 103182178#define AUDIT_SUCCESS 104 /* exit >= 0; value ignored */183179#define AUDIT_WATCH 105180180+#define AUDIT_PERM 106184181185182#define AUDIT_ARG0 200186183#define AUDIT_ARG1 (AUDIT_ARG0+1)···257252#define AUDIT_ARCH_V850 (EM_V850|__AUDIT_ARCH_LE)258253#define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)259254255255+#define AUDIT_PERM_EXEC 1256256+#define AUDIT_PERM_WRITE 2257257+#define AUDIT_PERM_READ 4258258+#define AUDIT_PERM_ATTR 8259259+260260struct audit_status {261261 __u32 mask; /* Bit mask for valid entries */262262 __u32 enabled; /* 1 = enabled, 0 = disabled */···324314#define AUDITSC_FAILURE 2325315#define AUDITSC_RESULT(x) ( ((long)(x))<0?AUDITSC_FAILURE:AUDITSC_SUCCESS )326316extern int __init audit_register_class(int class, unsigned *list);317317+extern int audit_classify_syscall(int abi, unsigned syscall);327318#ifdef CONFIG_AUDITSYSCALL328319/* These are defined in auditsc.c */329320 /* Public API */
+1
include/linux/hrtimer.h
···8080 * @get_softirq_time: function to retrieve the current time from the softirq8181 * @curr_timer: the timer which is executing a callback right now8282 * @softirq_time: the time when running the hrtimer queue in the softirq8383+ * @lock_key: the lock_class_key for use with lockdep8384 */8485struct hrtimer_base {8586 clockid_t index;
+6-1
include/linux/ktime.h
···5656#endif5757} ktime_t;58585959-#define KTIME_MAX (~((u64)1 << 63))5959+#define KTIME_MAX ((s64)~((u64)1 << 63))6060+#define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC)60616162/*6263 * ktime_t definitions when using the 64-bit scalar representation:···7473 */7574static inline ktime_t ktime_set(const long secs, const unsigned long nsecs)7675{7676+#if (BITS_PER_LONG == 64)7777+ if (unlikely(secs >= KTIME_SEC_MAX))7878+ return (ktime_t){ .tv64 = KTIME_MAX };7979+#endif7780 return (ktime_t) { .tv64 = (s64)secs * NSEC_PER_SEC + (s64)nsecs };7881}7982
+1-1
include/linux/mmc/host.h
···7777 struct device *dev;7878 struct class_device class_dev;7979 int index;8080- struct mmc_host_ops *ops;8080+ const struct mmc_host_ops *ops;8181 unsigned int f_min;8282 unsigned int f_max;8383 u32 ocr_avail;
···104104 return (ino & (AUDIT_INODE_BUCKETS-1));105105}106106107107+extern int audit_match_class(int class, unsigned syscall);107108extern int audit_comparator(const u32 left, const u32 op, const u32 right);108109extern int audit_compare_dname_path(const char *dname, const char *path,109110 int *dirlen);
+32-5
kernel/auditfilter.c
···302302 return 0;303303}304304305305+int audit_match_class(int class, unsigned syscall)306306+{307307+ if (unlikely(syscall >= AUDIT_BITMASK_SIZE * sizeof(__u32)))308308+ return 0;309309+ if (unlikely(class >= AUDIT_SYSCALL_CLASSES || !classes[class]))310310+ return 0;311311+ return classes[class][AUDIT_WORD(syscall)] & AUDIT_BIT(syscall);312312+}313313+305314/* Common user-space to kernel rule translation. */306315static inline struct audit_entry *audit_to_entry_common(struct audit_rule *rule)307316{···413404 case AUDIT_PERS:414405 case AUDIT_ARCH:415406 case AUDIT_MSGTYPE:407407+ case AUDIT_PPID:416408 case AUDIT_DEVMAJOR:417409 case AUDIT_DEVMINOR:418410 case AUDIT_EXIT:···422412 case AUDIT_ARG1:423413 case AUDIT_ARG2:424414 case AUDIT_ARG3:415415+ break;416416+ case AUDIT_PERM:417417+ if (f->val & ~15)418418+ goto exit_free;425419 break;426420 case AUDIT_INODE:427421 err = audit_to_inode(&entry->rule, f);···580566 goto exit_free;581567 entry->rule.buflen += f->val;582568 entry->rule.filterkey = str;569569+ break;570570+ case AUDIT_PERM:571571+ if (f->val & ~15)572572+ goto exit_free;583573 break;584574 default:585575 goto exit_free;···931913 }932914933915 ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE);934934- audit_log_format(ab, "audit updated rules specifying watch=");916916+ audit_log_format(ab, "audit updated rules specifying path=");935917 audit_log_untrustedstring(ab, owatch->path);936918 audit_log_format(ab, " with dev=%u ino=%lu\n", dev, ino);937919 audit_log_end(ab);···954936 struct audit_watch *w, *nextw;955937 struct audit_krule *r, *nextr;956938 struct audit_entry *e;939939+ struct audit_buffer *ab;957940958941 mutex_lock(&audit_filter_mutex);959942 parent->flags |= AUDIT_PARENT_INVALID;960943 list_for_each_entry_safe(w, nextw, &parent->watches, wlist) {961944 list_for_each_entry_safe(r, nextr, &w->rules, rlist) {962945 e = container_of(r, struct audit_entry, rule);946946+947947+ ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE);948948+ audit_log_format(ab, "audit implicitly removed rule path=");949949+ audit_log_untrustedstring(ab, w->path);950950+ if (r->filterkey) {951951+ audit_log_format(ab, " key=");952952+ audit_log_untrustedstring(ab, r->filterkey);953953+ } else954954+ audit_log_format(ab, " key=(null)");955955+ audit_log_format(ab, " list=%d", r->listnr);956956+ audit_log_end(ab);957957+963958 list_del(&r->rlist);964959 list_del_rcu(&e->list);965960 call_rcu(&e->rcu, audit_free_rule_rcu);966966-967967- audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,968968- "audit implicitly removed rule from list=%d\n",969969- AUDIT_FILTER_EXIT);970961 }971962 audit_remove_watch(w);972963 }
+51
kernel/auditsc.c
···209209#endif210210};211211212212+#define ACC_MODE(x) ("\004\002\006\006"[(x)&O_ACCMODE])213213+static inline int open_arg(int flags, int mask)214214+{215215+ int n = ACC_MODE(flags);216216+ if (flags & (O_TRUNC | O_CREAT))217217+ n |= AUDIT_PERM_WRITE;218218+ return n & mask;219219+}220220+221221+static int audit_match_perm(struct audit_context *ctx, int mask)222222+{223223+ unsigned n = ctx->major;224224+ switch (audit_classify_syscall(ctx->arch, n)) {225225+ case 0: /* native */226226+ if ((mask & AUDIT_PERM_WRITE) &&227227+ audit_match_class(AUDIT_CLASS_WRITE, n))228228+ return 1;229229+ if ((mask & AUDIT_PERM_READ) &&230230+ audit_match_class(AUDIT_CLASS_READ, n))231231+ return 1;232232+ if ((mask & AUDIT_PERM_ATTR) &&233233+ audit_match_class(AUDIT_CLASS_CHATTR, n))234234+ return 1;235235+ return 0;236236+ case 1: /* 32bit on biarch */237237+ if ((mask & AUDIT_PERM_WRITE) &&238238+ audit_match_class(AUDIT_CLASS_WRITE_32, n))239239+ return 1;240240+ if ((mask & AUDIT_PERM_READ) &&241241+ audit_match_class(AUDIT_CLASS_READ_32, n))242242+ return 1;243243+ if ((mask & AUDIT_PERM_ATTR) &&244244+ audit_match_class(AUDIT_CLASS_CHATTR_32, n))245245+ return 1;246246+ return 0;247247+ case 2: /* open */248248+ return mask & ACC_MODE(ctx->argv[1]);249249+ case 3: /* openat */250250+ return mask & ACC_MODE(ctx->argv[2]);251251+ case 4: /* socketcall */252252+ return ((mask & AUDIT_PERM_WRITE) && ctx->argv[0] == SYS_BIND);253253+ case 5: /* execve */254254+ return mask & AUDIT_PERM_EXEC;255255+ default:256256+ return 0;257257+ }258258+}259259+212260/* Determine if any context name data matches a rule's watch data */213261/* Compare a task_struct with an audit_rule. Return 1 on match, 0214262 * otherwise. */···444396 case AUDIT_FILTERKEY:445397 /* ignore this field for filtering */446398 result = 1;399399+ break;400400+ case AUDIT_PERM:401401+ result = audit_match_perm(ctx, f->val);447402 break;448403 }449404
+11-73
kernel/futex.c
···11201120 * if there are waiters then it will block, it does PI, etc. (Due to11211121 * races the kernel might see a 0 value of the futex too.)11221122 */11231123-static int do_futex_lock_pi(u32 __user *uaddr, int detect, int trylock,11241124- struct hrtimer_sleeper *to)11231123+static int futex_lock_pi(u32 __user *uaddr, int detect, unsigned long sec,11241124+ long nsec, int trylock)11251125{11261126+ struct hrtimer_sleeper timeout, *to = NULL;11261127 struct task_struct *curr = current;11271128 struct futex_hash_bucket *hb;11281129 u32 uval, newval, curval;···1132113111331132 if (refill_pi_state_cache())11341133 return -ENOMEM;11341134+11351135+ if (sec != MAX_SCHEDULE_TIMEOUT) {11361136+ to = &timeout;11371137+ hrtimer_init(&to->timer, CLOCK_REALTIME, HRTIMER_ABS);11381138+ hrtimer_init_sleeper(to, current);11391139+ to->timer.expires = ktime_set(sec, nsec);11401140+ }1135114111361142 q.pi_state = NULL;11371143 retry:···13151307 if (!detect && ret == -EDEADLK && 0)13161308 force_sig(SIGKILL, current);1317130913181318- return ret;13101310+ return ret != -EINTR ? ret : -ERESTARTNOINTR;1319131113201312 out_unlock_release_sem:13211313 queue_unlock(&q, hb);···13471339 goto retry;1348134013491341 return ret;13501350-}13511351-13521352-/*13531353- * Restart handler13541354- */13551355-static long futex_lock_pi_restart(struct restart_block *restart)13561356-{13571357- struct hrtimer_sleeper timeout, *to = NULL;13581358- int ret;13591359-13601360- restart->fn = do_no_restart_syscall;13611361-13621362- if (restart->arg2 || restart->arg3) {13631363- to = &timeout;13641364- hrtimer_init(&to->timer, CLOCK_REALTIME, HRTIMER_ABS);13651365- hrtimer_init_sleeper(to, current);13661366- to->timer.expires.tv64 = ((u64)restart->arg1 << 32) |13671367- (u64) restart->arg0;13681368- }13691369-13701370- pr_debug("lock_pi restart: %p, %d (%d)\n",13711371- (u32 __user *)restart->arg0, current->pid);13721372-13731373- ret = do_futex_lock_pi((u32 __user *)restart->arg0, restart->arg1,13741374- 0, to);13751375-13761376- if (ret != -EINTR)13771377- return ret;13781378-13791379- restart->fn = futex_lock_pi_restart;13801380-13811381- /* The other values are filled in */13821382- return -ERESTART_RESTARTBLOCK;13831383-}13841384-13851385-/*13861386- * Called from the syscall entry below.13871387- */13881388-static int futex_lock_pi(u32 __user *uaddr, int detect, unsigned long sec,13891389- long nsec, int trylock)13901390-{13911391- struct hrtimer_sleeper timeout, *to = NULL;13921392- struct restart_block *restart;13931393- int ret;13941394-13951395- if (sec != MAX_SCHEDULE_TIMEOUT) {13961396- to = &timeout;13971397- hrtimer_init(&to->timer, CLOCK_REALTIME, HRTIMER_ABS);13981398- hrtimer_init_sleeper(to, current);13991399- to->timer.expires = ktime_set(sec, nsec);14001400- }14011401-14021402- ret = do_futex_lock_pi(uaddr, detect, trylock, to);14031403-14041404- if (ret != -EINTR)14051405- return ret;14061406-14071407- pr_debug("lock_pi interrupted: %p, %d (%d)\n", uaddr, current->pid);14081408-14091409- restart = ¤t_thread_info()->restart_block;14101410- restart->fn = futex_lock_pi_restart;14111411- restart->arg0 = (unsigned long) uaddr;14121412- restart->arg1 = detect;14131413- if (to) {14141414- restart->arg2 = to->timer.expires.tv64 & 0xFFFFFFFF;14151415- restart->arg3 = to->timer.expires.tv64 >> 32;14161416- } else14171417- restart->arg2 = restart->arg3 = 0;14181418-14191419- return -ERESTART_RESTARTBLOCK;14201342}1421134314221344/*
+1-1
kernel/panic.c
···173173174174void add_taint(unsigned flag)175175{176176- debug_locks_off(); /* can't trust the integrity of the kernel anymore */176176+ debug_locks = 0; /* can't trust the integrity of the kernel anymore */177177 tainted |= flag;178178}179179EXPORT_SYMBOL(add_taint);
+5-1
kernel/power/Kconfig
···56565757config SOFTWARE_SUSPEND5858 bool "Software Suspend"5959- depends on PM && SWAP && (X86 && (!SMP || SUSPEND_SMP)) || ((FRV || PPC32) && !SMP)5959+ depends on PM && SWAP && ((X86 && (!SMP || SUSPEND_SMP) && !X86_PAE) || ((FRV || PPC32) && !SMP))6060 ---help---6161 Enable the possibility of suspending the machine.6262 It doesn't need ACPI or APM.···7777 on disk won't match with saved ones.78787979 For more information take a look at <file:Documentation/power/swsusp.txt>.8080+8181+ (For now, swsusp is incompatible with PAE aka HIGHMEM_64G on i386.8282+ we need identity mapping for resume to work, and that is trivial8383+ to get with 4MB pages, but less than trivial on PAE).80848185config PM_STD_PARTITION8286 string "Default resume partition"
+1-1
kernel/spinlock.c
···7272 * not re-enabled during lock-acquire (which the preempt-spin-ops do):7373 */7474#if !defined(CONFIG_PREEMPT) || !defined(CONFIG_SMP) || \7575- defined(CONFIG_PROVE_LOCKING)7575+ defined(CONFIG_DEBUG_LOCK_ALLOC)76767777void __lockfunc _read_lock(rwlock_t *lock)7878{
+15-2
mm/mmap.c
···3030#include <asm/cacheflush.h>3131#include <asm/tlb.h>32323333+#ifndef arch_mmap_check3434+#define arch_mmap_check(addr, len, flags) (0)3535+#endif3636+3337static void unmap_region(struct mm_struct *mm,3438 struct vm_area_struct *vma, struct vm_area_struct *prev,3539 unsigned long start, unsigned long end);···916912917913 if (!len)918914 return -EINVAL;915915+916916+ error = arch_mmap_check(addr, len, flags);917917+ if (error)918918+ return error;919919920920 /* Careful about overflows.. */921921 len = PAGE_ALIGN(len);···18671859 unsigned long flags;18681860 struct rb_node ** rb_link, * rb_parent;18691861 pgoff_t pgoff = addr >> PAGE_SHIFT;18621862+ int error;1870186318711864 len = PAGE_ALIGN(len);18721865 if (!len)···1875186618761867 if ((addr + len) > TASK_SIZE || (addr + len) < addr)18771868 return -EINVAL;18691869+18701870+ flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;18711871+18721872+ error = arch_mmap_check(addr, len, flags);18731873+ if (error)18741874+ return error;1878187518791876 /*18801877 * mlock MCL_FUTURE?···1921190619221907 if (security_vm_enough_memory(len >> PAGE_SHIFT))19231908 return -ENOMEM;19241924-19251925- flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;1926190919271910 /* Can we just expand an old private anonymous mapping? */19281911 if (vma_merge(mm, prev, addr, addr + len, flags,