]> git.karo-electronics.de Git - linux-beck.git/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Thu, 17 Jan 2008 23:49:49 +0000 (15:49 -0800)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Thu, 17 Jan 2008 23:49:49 +0000 (15:49 -0800)
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
  [SPARC64]: Fix hypervisor TLB operation error reporting.

15 files changed:
Documentation/local_ops.txt
arch/alpha/math-emu/math.c
arch/cris/arch-v10/vmlinux.lds.S
drivers/cpufreq/cpufreq_conservative.c
drivers/cpufreq/cpufreq_ondemand.c
drivers/cpufreq/cpufreq_userspace.c
drivers/media/video/saa7134/saa7134-core.c
drivers/pnp/pnpacpi/rsparser.c
drivers/video/modedb.c
fs/hfs/btree.c
fs/jbd/transaction.c
include/asm-cris/page.h
kernel/kmod.c
mm/memory.c
mm/page_alloc.c

index 1a45f11e645e978f445ba7396f0c5411a1695e06..4269a1105b378fafcc689435a2531b9d9d4287db 100644 (file)
@@ -45,29 +45,6 @@ long fails. The definition looks like :
 typedef struct { atomic_long_t a; } local_t;
 
 
-* Rules to follow when using local atomic operations
-
-- Variables touched by local ops must be per cpu variables.
-- _Only_ the CPU owner of these variables must write to them.
-- This CPU can use local ops from any context (process, irq, softirq, nmi, ...)
-  to update its local_t variables.
-- Preemption (or interrupts) must be disabled when using local ops in
-  process context to   make sure the process won't be migrated to a
-  different CPU between getting the per-cpu variable and doing the
-  actual local op.
-- When using local ops in interrupt context, no special care must be
-  taken on a mainline kernel, since they will run on the local CPU with
-  preemption already disabled. I suggest, however, to explicitly
-  disable preemption anyway to make sure it will still work correctly on
-  -rt kernels.
-- Reading the local cpu variable will provide the current copy of the
-  variable.
-- Reads of these variables can be done from any CPU, because updates to
-  "long", aligned, variables are always atomic. Since no memory
-  synchronization is done by the writer CPU, an outdated copy of the
-  variable can be read when reading some _other_ cpu's variables.
-
-
 * Rules to follow when using local atomic operations
 
 - Variables touched by local ops must be per cpu variables.
index ae79dd970b021ff84ca59d3b5f6b14a4b19ce25f..58c2669a1dd4fa431f32ecbe8416c24a540525ba 100644 (file)
@@ -225,7 +225,7 @@ alpha_fp_emul (unsigned long pc)
                                FP_UNPACK_SP(SB, &vb);
                                DR_c = DB_c;
                                DR_s = DB_s;
-                               DR_e = DB_e;
+                               DR_e = DB_e + (1024 - 128);
                                DR_f = SB_f << (52 - 23);
                                goto pack_d;
                        }
index 9859d49d088bfb0c714bc71180279df06babf8b6..97a7876ed6819061fec0a9be042f60be1d260d77 100644 (file)
@@ -9,7 +9,8 @@
  */    
 
 #include <asm-generic/vmlinux.lds.h>
-               
+#include <asm/page.h>
+
 jiffies = jiffies_64;
 SECTIONS
 {
@@ -23,7 +24,7 @@ SECTIONS
        _stext = .;
        __stext = .;
        .text : {
-               *(.text)
+               TEXT_TEXT
                SCHED_TEXT
                LOCK_TEXT
                *(.fixup)
@@ -49,10 +50,10 @@ SECTIONS
        __edata = . ;                 /* End of data section */
        _edata = . ;
 
-       . = ALIGN(8192);              /* init_task and stack, must be aligned */
+       . = ALIGN(PAGE_SIZE);   /* init_task and stack, must be aligned */
        .data.init_task : { *(.data.init_task) }
 
-       . = ALIGN(8192);              /* Init code and data */
+       . = ALIGN(PAGE_SIZE);   /* Init code and data */
        __init_begin = .;
        .init.text : { 
                   _sinittext = .;
@@ -66,13 +67,7 @@ SECTIONS
        __setup_end = .;
        .initcall.init : {
                __initcall_start = .;
-               *(.initcall1.init);
-               *(.initcall2.init);
-               *(.initcall3.init);
-               *(.initcall4.init);
-               *(.initcall5.init);
-               *(.initcall6.init);
-               *(.initcall7.init);
+               INITCALLS
                __initcall_end = .;     
        }
 
@@ -88,16 +83,18 @@ SECTIONS
                __initramfs_start = .;
                *(.init.ramfs)
                __initramfs_end = .;
-               /* We fill to the next page, so we can discard all init
-                  pages without needing to consider what payload might be
-                  appended to the kernel image.  */
-               FILL (0); 
-               . = ALIGN (8192);
        }
 #endif
-       
        __vmlinux_end = .;            /* last address of the physical file */
-       __init_end = .;
+
+       /*
+        * We fill to the next page, so we can discard all init
+        * pages without needing to consider what payload might be
+        * appended to the kernel image.
+        */
+       . = ALIGN(PAGE_SIZE);
+
+       __init_end = .;
 
        __data_end = . ;              /* Move to _edata ? */
        __bss_start = .;              /* BSS */
index 1bba99747f5b3da806fea25aa991d3ac151673be..5d3a04ba6ad2c38aaf18d443b508511206bfac0c 100644 (file)
@@ -603,5 +603,9 @@ MODULE_DESCRIPTION ("'cpufreq_conservative' - A dynamic cpufreq governor for "
                "optimised for use in a battery environment");
 MODULE_LICENSE ("GPL");
 
+#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
+fs_initcall(cpufreq_gov_dbs_init);
+#else
 module_init(cpufreq_gov_dbs_init);
+#endif
 module_exit(cpufreq_gov_dbs_exit);
index 369f44595150f7e568fff7802d8047ca645f0ffd..d2af20dda3827919d218d9dc592aeb8ca0fd8f03 100644 (file)
@@ -610,6 +610,9 @@ MODULE_DESCRIPTION("'cpufreq_ondemand' - A dynamic cpufreq governor for "
                    "Low Latency Frequency Transition capable processors");
 MODULE_LICENSE("GPL");
 
+#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND
+fs_initcall(cpufreq_gov_dbs_init);
+#else
 module_init(cpufreq_gov_dbs_init);
+#endif
 module_exit(cpufreq_gov_dbs_exit);
-
index 51bedab6c808da57dd2b26e896021613d2540655..f8cdde4bf6cd86030a8f829d00fdac862d5847f2 100644 (file)
@@ -231,5 +231,9 @@ MODULE_AUTHOR ("Dominik Brodowski <linux@brodo.de>, Russell King <rmk@arm.linux.
 MODULE_DESCRIPTION ("CPUfreq policy governor 'userspace'");
 MODULE_LICENSE ("GPL");
 
+#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE
 fs_initcall(cpufreq_gov_userspace_init);
+#else
+module_init(cpufreq_gov_userspace_init);
+#endif
 module_exit(cpufreq_gov_userspace_exit);
index 4fd187ac9d7088378498f408c1b2efa2e732c142..4f0a9157ecb15d158d24ca8df77d6e6eb3a2855a 100644 (file)
@@ -1202,9 +1202,8 @@ static int saa7134_suspend(struct pci_dev *pci_dev , pm_message_t state)
 
 static int saa7134_resume(struct pci_dev *pci_dev)
 {
-
        struct saa7134_dev *dev = pci_get_drvdata(pci_dev);
-       unsigned int flags;
+       unsigned long flags;
 
        pci_restore_state(pci_dev);
        pci_set_power_state(pci_dev, PCI_D0);
index f7b8648acbfa4bf863d0cdd16c5769e544e3d199..6b9840cce0f4a8cdf9b1a2a51c48e186e53015f2 100644 (file)
@@ -215,6 +215,7 @@ static void pnpacpi_parse_allocated_ioresource(struct pnp_resource_table *res,
        } else if (!warned) {
                printk(KERN_ERR "pnpacpi: exceeded the max number of IO "
                                "resources: %d \n", PNP_MAX_PORT);
+               warned = 1;
        }
 }
 
@@ -242,6 +243,7 @@ static void pnpacpi_parse_allocated_memresource(struct pnp_resource_table *res,
        } else if (!warned) {
                printk(KERN_ERR "pnpacpi: exceeded the max number of mem "
                                "resources: %d\n", PNP_MAX_MEM);
+               warned = 1;
        }
 }
 
index 8d81ef019c6c6f8de6a5eeb6013b061de650a649..08d07255223343c13487d31162f009a89e95e172 100644 (file)
@@ -259,6 +259,10 @@ static const struct fb_videomode modedb[] = {
        /* 1366x768, 60 Hz, 47.403 kHz hsync, WXGA 16:9 aspect ratio */
        NULL, 60, 1366, 768, 13806, 120, 10, 14, 3, 32, 5,
        0, FB_VMODE_NONINTERLACED
+   }, {
+       /* 1280x800, 60 Hz, 47.403 kHz hsync, WXGA 16:10 aspect ratio */
+       NULL, 60, 1280, 800, 12048, 200, 64, 24, 1, 136, 3,
+       0, FB_VMODE_NONINTERLACED
     },
 };
 
index 31284c77bba87b8a393d5cc78789cd13f2e02b31..110dd3515dc89b27e226a9a65867f338df18de69 100644 (file)
@@ -61,7 +61,7 @@ struct hfs_btree *hfs_btree_open(struct super_block *sb, u32 id, btree_keycmp ke
        mapping = tree->inode->i_mapping;
        page = read_mapping_page(mapping, 0, NULL);
        if (IS_ERR(page))
-               goto free_tree;
+               goto free_inode;
 
        /* Load the header */
        head = (struct hfs_btree_header_rec *)(kmap(page) + sizeof(struct hfs_bnode_desc));
@@ -99,11 +99,12 @@ struct hfs_btree *hfs_btree_open(struct super_block *sb, u32 id, btree_keycmp ke
        page_cache_release(page);
        return tree;
 
- fail_page:
+fail_page:
        page_cache_release(page);
- free_tree:
+free_inode:
        tree->inode->i_mapping->a_ops = &hfs_aops;
        iput(tree->inode);
+free_tree:
        kfree(tree);
        return NULL;
 }
index 08ff6c7028cc585b13cab54d01abb8ca1c6ea15d..038ed743619911799dfff8e27623e75f593fc60c 100644 (file)
@@ -288,10 +288,12 @@ handle_t *journal_start(journal_t *journal, int nblocks)
                jbd_free_handle(handle);
                current->journal_info = NULL;
                handle = ERR_PTR(err);
+               goto out;
        }
 
        lock_acquire(&handle->h_lockdep_map, 0, 0, 0, 2, _THIS_IP_);
 
+out:
        return handle;
 }
 
index 0648e3153f81f2d1f49d8633d5b72d59aa3ba117..b84353ef6998459ccf3b40da3777254cadcfe1fe 100644 (file)
@@ -4,14 +4,11 @@
 #ifdef __KERNEL__
 
 #include <asm/arch/page.h>
+#include <linux/const.h>
 
 /* PAGE_SHIFT determines the page size */
 #define PAGE_SHIFT     13
-#ifndef __ASSEMBLY__
-#define PAGE_SIZE      (1UL << PAGE_SHIFT)
-#else
-#define PAGE_SIZE      (1 << PAGE_SHIFT)
-#endif
+#define PAGE_SIZE      (_AC(1, UL) << PAGE_SHIFT)
 #define PAGE_MASK      (~(PAGE_SIZE-1))
 
 #define clear_page(page)        memset((void *)(page), 0, PAGE_SIZE)
index c6a4f8aebeba5c8a74a6bfc063e4ad08c3f14792..bb7df2a28bd719d07978593cb10f7264b6f43f3b 100644 (file)
@@ -451,13 +451,11 @@ int call_usermodehelper_exec(struct subprocess_info *sub_info,
                             enum umh_wait wait)
 {
        DECLARE_COMPLETION_ONSTACK(done);
-       int retval;
+       int retval = 0;
 
        helper_lock();
-       if (sub_info->path[0] == '\0') {
-               retval = 0;
+       if (sub_info->path[0] == '\0')
                goto out;
-       }
 
        if (!khelper_wq || usermodehelper_disabled) {
                retval = -EBUSY;
@@ -468,13 +466,14 @@ int call_usermodehelper_exec(struct subprocess_info *sub_info,
        sub_info->wait = wait;
 
        queue_work(khelper_wq, &sub_info->work);
-       if (wait == UMH_NO_WAIT) /* task has freed sub_info */
-               return 0;
+       if (wait == UMH_NO_WAIT)        /* task has freed sub_info */
+               goto unlock;
        wait_for_completion(&done);
        retval = sub_info->retval;
 
-  out:
+out:
        call_usermodehelper_freeinfo(sub_info);
+unlock:
        helper_unlock();
        return retval;
 }
index 4bf0b6d0eb2a675bbd1083099448d54979dff304..6dd1cd88bfb67411767b28e0cdc11a35b52fc92a 100644 (file)
@@ -392,6 +392,7 @@ struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr, pte_
                        return NULL;
        }
 
+#ifdef CONFIG_DEBUG_VM
        /*
         * Add some anal sanity checks for now. Eventually,
         * we should just do "return pfn_to_page(pfn)", but
@@ -402,6 +403,7 @@ struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr, pte_
                print_bad_pte(vma, pte, addr);
                return NULL;
        }
+#endif
 
        /*
         * NOTE! We still have PageReserved() pages in the page 
index e1028fae3ebbd2644628316cc08f94fa55ae0dad..b2838c24e582c11b8e0680ca5d5b5f97389145ba 100644 (file)
@@ -2566,7 +2566,7 @@ static void __meminit zone_init_free_lists(struct pglist_data *pgdat,
        memmap_init_zone((size), (nid), (zone), (start_pfn), MEMMAP_EARLY)
 #endif
 
-static int __devinit zone_batchsize(struct zone *zone)
+static int zone_batchsize(struct zone *zone)
 {
        int batch;