]> Pileus Git - ~andy/linux/commitdiff
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Fri, 11 May 2007 19:53:21 +0000 (12:53 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Fri, 11 May 2007 19:53:21 +0000 (12:53 -0700)
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
  [IA64] Quicklist support for IA64
  [IA64] fix Kprobes reentrancy
  [IA64] SN: validate smp_affinity mask on intr redirect
  [IA64] drivers/char/snsc_event.c:206: warning: unused variable `p'
  [IA64] mca.c:121: warning: 'cpe_poll_timer' defined but not used
  [IA64] Fix - Section mismatch: reference to .init.data:mvec_name
  [IA64] more warning cleanups
  [IA64] Wire up epoll_pwait and utimensat
  [IA64] Fix warnings resulting from type-checking in dev_dbg()
  [IA64] typo s/kenrel/kernel/

21 files changed:
arch/ia64/Kconfig
arch/ia64/hp/common/hwsw_iommu.c
arch/ia64/kernel/entry.S
arch/ia64/kernel/err_inject.c
arch/ia64/kernel/irq.c
arch/ia64/kernel/kprobes.c
arch/ia64/kernel/machvec.c
arch/ia64/kernel/mca.c
arch/ia64/mm/contig.c
arch/ia64/mm/discontig.c
arch/ia64/mm/init.c
arch/ia64/sn/kernel/io_common.c
arch/ia64/sn/kernel/xpc_partition.c
arch/ia64/sn/kernel/xpnet.c
drivers/char/snsc_event.c
drivers/pci/hotplug/sgi_hotplug.c
include/asm-ia64/irq.h
include/asm-ia64/kprobes.h
include/asm-ia64/pgalloc.h
include/asm-ia64/unistd.h
kernel/irq/proc.c

index 6e41471449c034f0cd32265590608fcfe68b604c..de1bff6599690c89d9f4f290edcb167e70d79b82 100644 (file)
@@ -31,6 +31,10 @@ config ZONE_DMA
        def_bool y
        depends on !IA64_SGI_SN2
 
+config QUICKLIST
+       bool
+       default y
+
 config MMU
        bool
        default y
index 2153bcacbe6c9d29818608521293d08842594859..94e57109fad658d060542aea2ed9f51bd1d230db 100644 (file)
@@ -63,7 +63,7 @@ use_swiotlb (struct device *dev)
        return dev && dev->dma_mask && !hwiommu_dma_supported(dev, *dev->dma_mask);
 }
 
-void
+void __init
 hwsw_init (void)
 {
        /* default to a smallish 2MB sw I/O TLB */
index b50bf208678ea6c981f3e1b4e439b69e80887e4f..144b056282af0c06762fc1060cca5c219085523b 100644 (file)
@@ -1583,5 +1583,7 @@ sys_call_table:
        data8 sys_vmsplice
        data8 sys_ni_syscall                    // reserved for move_pages
        data8 sys_getcpu
+       data8 sys_epoll_pwait                   // 1305
+       data8 sys_utimensat
 
        .org sys_call_table + 8*NR_syscalls     // guard against failures to increase NR_syscalls
index 6a49600cf337f5e468e857ccce5088f12917bfe8..b642648cc2acdbd7a1548d8d76685fec568cced7 100644 (file)
@@ -291,5 +291,5 @@ module_init(err_inject_init);
 module_exit(err_inject_exit);
 
 MODULE_AUTHOR("Fenghua Yu <fenghua.yu@intel.com>");
-MODULE_DESCRIPTION("MC error injection kenrel sysfs interface");
+MODULE_DESCRIPTION("MC error injection kernel sysfs interface");
 MODULE_LICENSE("GPL");
index ce49c85c928f5fe44f52501c86211b11926c89d8..b4c239685d2eb8f0072d2510573d027ab867d1c3 100644 (file)
@@ -104,6 +104,17 @@ void set_irq_affinity_info (unsigned int irq, int hwid, int redir)
                irq_redir[irq] = (char) (redir & 0xff);
        }
 }
+
+bool is_affinity_mask_valid(cpumask_t cpumask)
+{
+       if (ia64_platform_is("sn2")) {
+               /* Only allow one CPU to be specified in the smp_affinity mask */
+               if (cpus_weight(cpumask) != 1)
+                       return false;
+       }
+       return true;
+}
+
 #endif /* CONFIG_SMP */
 
 #ifdef CONFIG_HOTPLUG_CPU
index 4f5fd0960ba7c0c7e1c44e0c358edff198e947f0..72e593e940531dc136af5334f83d29f00235ff31 100644 (file)
@@ -370,14 +370,18 @@ static int __kprobes valid_kprobe_addr(int template, int slot,
 
 static void __kprobes save_previous_kprobe(struct kprobe_ctlblk *kcb)
 {
-       kcb->prev_kprobe.kp = kprobe_running();
-       kcb->prev_kprobe.status = kcb->kprobe_status;
+       unsigned int i;
+       i = atomic_add_return(1, &kcb->prev_kprobe_index);
+       kcb->prev_kprobe[i-1].kp = kprobe_running();
+       kcb->prev_kprobe[i-1].status = kcb->kprobe_status;
 }
 
 static void __kprobes restore_previous_kprobe(struct kprobe_ctlblk *kcb)
 {
-       __get_cpu_var(current_kprobe) = kcb->prev_kprobe.kp;
-       kcb->kprobe_status = kcb->prev_kprobe.status;
+       unsigned int i;
+       i = atomic_sub_return(1, &kcb->prev_kprobe_index);
+       __get_cpu_var(current_kprobe) = kcb->prev_kprobe[i].kp;
+       kcb->kprobe_status = kcb->prev_kprobe[i].status;
 }
 
 static void __kprobes set_current_kprobe(struct kprobe *p,
index 9620822270a6e122d00c48cc5bb2acb89b313e10..13df337508e7fe5f6b626ff66735026469acb1b3 100644 (file)
@@ -35,7 +35,7 @@ lookup_machvec (const char *name)
        return 0;
 }
 
-void
+void __init
 machvec_init (const char *name)
 {
        struct ia64_machine_vector *mv;
index f8ae709de0b5341e48abaaf13ac1bd011dd98ee0..26814de6c29ace5955dc65b3b0eac36b97f36e69 100644 (file)
@@ -118,7 +118,9 @@ static ia64_mc_info_t               ia64_mc_info;
 #define CPE_HISTORY_LENGTH    5
 #define CMC_HISTORY_LENGTH    5
 
+#ifdef CONFIG_ACPI
 static struct timer_list cpe_poll_timer;
+#endif
 static struct timer_list cmc_poll_timer;
 /*
  * This variable tells whether we are currently in polling mode.
index 44ce5ed9444ca255e2df50971608db16acaf81c2..7ac8592a35b6fd0a8550de87fedec681496a9d7b 100644 (file)
@@ -88,7 +88,7 @@ void show_mem(void)
        printk(KERN_INFO "%d pages shared\n", total_shared);
        printk(KERN_INFO "%d pages swap cached\n", total_cached);
        printk(KERN_INFO "Total of %ld pages in page table cache\n",
-              pgtable_quicklist_total_size());
+              quicklist_total_size());
        printk(KERN_INFO "%d free buffer pages\n", nr_free_buffer_pages());
 }
 
index 94844442812a98e31ddaf083dbb68fd74a9b0d55..38085ac183380af17b1a805151c10699a89385fb 100644 (file)
@@ -561,7 +561,7 @@ void show_mem(void)
        printk(KERN_INFO "%d pages shared\n", total_shared);
        printk(KERN_INFO "%d pages swap cached\n", total_cached);
        printk(KERN_INFO "Total of %ld pages in page table cache\n",
-              pgtable_quicklist_total_size());
+              quicklist_total_size());
        printk(KERN_INFO "%d free buffer pages\n", nr_free_buffer_pages());
 }
 
index cffb1e8325e8e226fdde5e996f33aad425bf6006..c14abefabafae6ed8932d9231092a8b55aed3a1d 100644 (file)
@@ -39,9 +39,6 @@
 
 DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
 
-DEFINE_PER_CPU(unsigned long *, __pgtable_quicklist);
-DEFINE_PER_CPU(long, __pgtable_quicklist_size);
-
 extern void ia64_tlb_init (void);
 
 unsigned long MAX_DMA_ADDRESS = PAGE_OFFSET + 0x100000000UL;
@@ -56,54 +53,6 @@ EXPORT_SYMBOL(vmem_map);
 struct page *zero_page_memmap_ptr;     /* map entry for zero page */
 EXPORT_SYMBOL(zero_page_memmap_ptr);
 
-#define MIN_PGT_PAGES                  25UL
-#define MAX_PGT_FREES_PER_PASS         16L
-#define PGT_FRACTION_OF_NODE_MEM       16
-
-static inline long
-max_pgt_pages(void)
-{
-       u64 node_free_pages, max_pgt_pages;
-
-#ifndef        CONFIG_NUMA
-       node_free_pages = nr_free_pages();
-#else
-       node_free_pages = node_page_state(numa_node_id(), NR_FREE_PAGES);
-#endif
-       max_pgt_pages = node_free_pages / PGT_FRACTION_OF_NODE_MEM;
-       max_pgt_pages = max(max_pgt_pages, MIN_PGT_PAGES);
-       return max_pgt_pages;
-}
-
-static inline long
-min_pages_to_free(void)
-{
-       long pages_to_free;
-
-       pages_to_free = pgtable_quicklist_size - max_pgt_pages();
-       pages_to_free = min(pages_to_free, MAX_PGT_FREES_PER_PASS);
-       return pages_to_free;
-}
-
-void
-check_pgt_cache(void)
-{
-       long pages_to_free;
-
-       if (unlikely(pgtable_quicklist_size <= MIN_PGT_PAGES))
-               return;
-
-       preempt_disable();
-       while (unlikely((pages_to_free = min_pages_to_free()) > 0)) {
-               while (pages_to_free--) {
-                       free_page((unsigned long)pgtable_quicklist_alloc());
-               }
-               preempt_enable();
-               preempt_disable();
-       }
-       preempt_enable();
-}
-
 void
 lazy_mmu_prot_update (pte_t pte)
 {
index d48bcd83253c28073050377cbd5f937882a3f6a5..7ed72d3faf73047130cdc042e8da9a02b3e6ed36 100644 (file)
@@ -364,7 +364,7 @@ void sn_bus_store_sysdata(struct pci_dev *dev)
 
        element = kzalloc(sizeof(struct sysdata_el), GFP_KERNEL);
        if (!element) {
-               dev_dbg(dev, "%s: out of memory!\n", __FUNCTION__);
+               dev_dbg(&dev->dev, "%s: out of memory!\n", __FUNCTION__);
                return;
        }
        element->sysdata = SN_PCIDEV_INFO(dev);
index 57c723f5cba404f5cda5fbefd6a370c97bc328df..7ba403232cb8321516bbbceb0cb8eeb841a467d8 100644 (file)
@@ -574,7 +574,7 @@ xpc_update_partition_info(struct xpc_partition *part, u8 remote_rp_version,
                u64 remote_vars_pa, struct xpc_vars *remote_vars)
 {
        part->remote_rp_version = remote_rp_version;
-       dev_dbg(xpc_part, "  remote_rp_version = 0x%016lx\n",
+       dev_dbg(xpc_part, "  remote_rp_version = 0x%016x\n",
                part->remote_rp_version);
 
        part->remote_rp_stamp = *remote_rp_stamp;
index 88fad85ceeff5b6f2ce18c39f05b5f3581bbedb2..da7213530972820fbc34bdc37b0eb051137e991a 100644 (file)
@@ -343,8 +343,8 @@ xpnet_dev_open(struct net_device *dev)
        enum xpc_retval ret;
 
 
-       dev_dbg(xpnet, "calling xpc_connect(%d, 0x%p, NULL, %ld, %ld, %d, "
-               "%d)\n", XPC_NET_CHANNEL, xpnet_connection_activity,
+       dev_dbg(xpnet, "calling xpc_connect(%d, 0x%p, NULL, %ld, %ld, %ld, "
+               "%ld)\n", XPC_NET_CHANNEL, xpnet_connection_activity,
                XPNET_MSG_SIZE, XPNET_MSG_NENTRIES, XPNET_MAX_KTHREADS,
                XPNET_MAX_IDLE_KTHREADS);
 
index 2f56e8c54897d5c55ca1caec974c95e43c787fd6..1b75b0b7d5429dae92918dc1987c813b1de25138 100644 (file)
@@ -203,8 +203,6 @@ scdrv_dispatch_event(char *event, int len)
        class = (code & EV_CLASS_MASK);
 
        if (class == EV_CLASS_PWRD_NOTIFY || code == ENV_PWRDN_PEND) {
-               struct task_struct *p;
-
                if (snsc_shutting_down)
                        return;
 
index 78cf0711d1fadd5bd670425a4e7ce732748795c2..ef07c36bccf7ea1b4868853080ce6717e7818233 100644 (file)
@@ -249,19 +249,19 @@ static int sn_slot_enable(struct hotplug_slot *bss_hotplug_slot,
 
 
        if (rc == PCI_SLOT_ALREADY_UP) {
-               dev_dbg(slot->pci_bus->self, "is already active\n");
+               dev_dbg(&slot->pci_bus->self->dev, "is already active\n");
                return 1; /* return 1 to user */
        }
 
        if (rc == PCI_L1_ERR) {
-               dev_dbg(slot->pci_bus->self,
+               dev_dbg(&slot->pci_bus->self->dev,
                        "L1 failure %d with message: %s",
                        resp.resp_sub_errno, resp.resp_l1_msg);
                return -EPERM;
        }
 
        if (rc) {
-               dev_dbg(slot->pci_bus->self,
+               dev_dbg(&slot->pci_bus->self->dev,
                        "insert failed with error %d sub-error %d\n",
                        rc, resp.resp_sub_errno);
                return -EIO;
@@ -287,25 +287,25 @@ static int sn_slot_disable(struct hotplug_slot *bss_hotplug_slot,
 
        if ((action == PCI_REQ_SLOT_ELIGIBLE) &&
            (rc == PCI_SLOT_ALREADY_DOWN)) {
-               dev_dbg(slot->pci_bus->self, "Slot %s already inactive\n");
+               dev_dbg(&slot->pci_bus->self->dev, "Slot %s already inactive\n", slot->physical_path);
                return 1; /* return 1 to user */
        }
 
        if ((action == PCI_REQ_SLOT_ELIGIBLE) && (rc == PCI_EMPTY_33MHZ)) {
-               dev_dbg(slot->pci_bus->self,
+               dev_dbg(&slot->pci_bus->self->dev,
                        "Cannot remove last 33MHz card\n");
                return -EPERM;
        }
 
        if ((action == PCI_REQ_SLOT_ELIGIBLE) && (rc == PCI_L1_ERR)) {
-               dev_dbg(slot->pci_bus->self,
+               dev_dbg(&slot->pci_bus->self->dev,
                        "L1 failure %d with message \n%s\n",
                        resp.resp_sub_errno, resp.resp_l1_msg);
                return -EPERM;
        }
 
        if ((action == PCI_REQ_SLOT_ELIGIBLE) && rc) {
-               dev_dbg(slot->pci_bus->self,
+               dev_dbg(&slot->pci_bus->self->dev,
                        "remove failed with error %d sub-error %d\n",
                        rc, resp.resp_sub_errno);
                return -EIO;
@@ -317,12 +317,12 @@ static int sn_slot_disable(struct hotplug_slot *bss_hotplug_slot,
        if ((action == PCI_REQ_SLOT_DISABLE) && !rc) {
                pcibus_info = SN_PCIBUS_BUSSOFT_INFO(slot->pci_bus);
                pcibus_info->pbi_enabled_devices &= ~(1 << device_num);
-               dev_dbg(slot->pci_bus->self, "remove successful\n");
+               dev_dbg(&slot->pci_bus->self->dev, "remove successful\n");
                return 0;
        }
 
        if ((action == PCI_REQ_SLOT_DISABLE) && rc) {
-               dev_dbg(slot->pci_bus->self,"remove failed rc = %d\n", rc);
+               dev_dbg(&slot->pci_bus->self->dev,"remove failed rc = %d\n", rc);
        }
 
        return rc;
@@ -375,7 +375,7 @@ static int enable_slot(struct hotplug_slot *bss_hotplug_slot)
        num_funcs = pci_scan_slot(slot->pci_bus,
                                  PCI_DEVFN(slot->device_num + 1, 0));
        if (!num_funcs) {
-               dev_dbg(slot->pci_bus->self, "no device in slot\n");
+               dev_dbg(&slot->pci_bus->self->dev, "no device in slot\n");
                mutex_unlock(&sn_hotplug_mutex);
                return -ENODEV;
        }
@@ -427,7 +427,7 @@ static int enable_slot(struct hotplug_slot *bss_hotplug_slot)
                phandle = PCI_CONTROLLER(slot->pci_bus)->acpi_handle;
 
                if (acpi_bus_get_device(phandle, &pdevice)) {
-                       dev_dbg(slot->pci_bus->self,
+                       dev_dbg(&slot->pci_bus->self->dev,
                                "no parent device, assuming NULL\n");
                        pdevice = NULL;
                }
@@ -479,10 +479,10 @@ static int enable_slot(struct hotplug_slot *bss_hotplug_slot)
        mutex_unlock(&sn_hotplug_mutex);
 
        if (rc == 0)
-               dev_dbg(slot->pci_bus->self,
+               dev_dbg(&slot->pci_bus->self->dev,
                        "insert operation successful\n");
        else
-               dev_dbg(slot->pci_bus->self,
+               dev_dbg(&slot->pci_bus->self->dev,
                        "insert operation failed rc = %d\n", rc);
 
        return rc;
@@ -659,16 +659,16 @@ static int sn_hotplug_slot_register(struct pci_bus *pci_bus)
                if (rc)
                        goto register_err;
        }
-       dev_dbg(pci_bus->self, "Registered bus with hotplug\n");
+       dev_dbg(&pci_bus->self->dev, "Registered bus with hotplug\n");
        return rc;
 
 register_err:
-       dev_dbg(pci_bus->self, "bus failed to register with err = %d\n",
+       dev_dbg(&pci_bus->self->dev, "bus failed to register with err = %d\n",
                rc);
 
 alloc_err:
        if (rc == -ENOMEM)
-               dev_dbg(pci_bus->self, "Memory allocation error\n");
+               dev_dbg(&pci_bus->self->dev, "Memory allocation error\n");
 
        /* destroy THIS element */
        if (bss_hotplug_slot)
@@ -701,10 +701,10 @@ static int sn_pci_hotplug_init(void)
 
                rc = sn_pci_bus_valid(pci_bus);
                if (rc != 1) {
-                       dev_dbg(pci_bus->self, "not a valid hotplug bus\n");
+                       dev_dbg(&pci_bus->self->dev, "not a valid hotplug bus\n");
                        continue;
                }
-               dev_dbg(pci_bus->self, "valid hotplug bus\n");
+               dev_dbg(&pci_bus->self->dev, "valid hotplug bus\n");
 
                rc = sn_hotplug_slot_register(pci_bus);
                if (!rc) {
index 79479e2c6966b0cb468db6f348538e8b0e19d32f..67221615e3173537ac8df7b4ba6de436dd97db3c 100644 (file)
@@ -11,6 +11,9 @@
  * 02/29/00     D.Mosberger    moved most things into hw_irq.h
  */
 
+#include <linux/types.h>
+#include <linux/cpumask.h>
+
 #define NR_IRQS                256
 #define NR_IRQ_VECTORS NR_IRQS
 
@@ -29,5 +32,8 @@ extern void disable_irq (unsigned int);
 extern void disable_irq_nosync (unsigned int);
 extern void enable_irq (unsigned int);
 extern void set_irq_affinity_info (unsigned int irq, int dest, int redir);
+bool is_affinity_mask_valid(cpumask_t cpumask);
+
+#define is_affinity_mask_valid is_affinity_mask_valid
 
 #endif /* _ASM_IA64_IRQ_H */
index 828ae00e47c1328e172cae15788dd73953f96de3..2abc98b336f3f605ac4b18213b56d7a2f13d88f4 100644 (file)
@@ -71,13 +71,15 @@ struct prev_kprobe {
 
 #define        MAX_PARAM_RSE_SIZE      (0x60+0x60/0x3f)
 /* per-cpu kprobe control block */
+#define ARCH_PREV_KPROBE_SZ 2
 struct kprobe_ctlblk {
        unsigned long kprobe_status;
        struct pt_regs jprobe_saved_regs;
        unsigned long jprobes_saved_stacked_regs[MAX_PARAM_RSE_SIZE];
        unsigned long *bsp;
        unsigned long cfm;
-       struct prev_kprobe prev_kprobe;
+       atomic_t prev_kprobe_index;
+       struct prev_kprobe prev_kprobe[ARCH_PREV_KPROBE_SZ];
 };
 
 #define JPROBE_ENTRY(pentry)   (kprobe_opcode_t *)pentry
index 560c287b12330c4e4f35860297a13f28c874a52b..67552cad517339dea7791ce825ca00109d6602f3 100644 (file)
 #include <linux/mm.h>
 #include <linux/page-flags.h>
 #include <linux/threads.h>
+#include <linux/quicklist.h>
 
 #include <asm/mmu_context.h>
 
-DECLARE_PER_CPU(unsigned long *, __pgtable_quicklist);
-#define pgtable_quicklist __ia64_per_cpu_var(__pgtable_quicklist)
-DECLARE_PER_CPU(long, __pgtable_quicklist_size);
-#define pgtable_quicklist_size __ia64_per_cpu_var(__pgtable_quicklist_size)
-
-static inline long pgtable_quicklist_total_size(void)
-{
-       long ql_size = 0;
-       int cpuid;
-
-       for_each_online_cpu(cpuid) {
-               ql_size += per_cpu(__pgtable_quicklist_size, cpuid);
-       }
-       return ql_size;
-}
-
-static inline void *pgtable_quicklist_alloc(void)
-{
-       unsigned long *ret = NULL;
-
-       preempt_disable();
-
-       ret = pgtable_quicklist;
-       if (likely(ret != NULL)) {
-               pgtable_quicklist = (unsigned long *)(*ret);
-               ret[0] = 0;
-               --pgtable_quicklist_size;
-               preempt_enable();
-       } else {
-               preempt_enable();
-               ret = (unsigned long *)__get_free_page(GFP_KERNEL | __GFP_ZERO);
-       }
-
-       return ret;
-}
-
-static inline void pgtable_quicklist_free(void *pgtable_entry)
-{
-#ifdef CONFIG_NUMA
-       int nid = page_to_nid(virt_to_page(pgtable_entry));
-
-       if (unlikely(nid != numa_node_id())) {
-               free_page((unsigned long)pgtable_entry);
-               return;
-       }
-#endif
-
-       preempt_disable();
-       *(unsigned long *)pgtable_entry = (unsigned long)pgtable_quicklist;
-       pgtable_quicklist = (unsigned long *)pgtable_entry;
-       ++pgtable_quicklist_size;
-       preempt_enable();
-}
-
 static inline pgd_t *pgd_alloc(struct mm_struct *mm)
 {
-       return pgtable_quicklist_alloc();
+       return quicklist_alloc(0, GFP_KERNEL, NULL);
 }
 
 static inline void pgd_free(pgd_t * pgd)
 {
-       pgtable_quicklist_free(pgd);
+       quicklist_free(0, NULL, pgd);
 }
 
 #ifdef CONFIG_PGTABLE_4
@@ -94,12 +41,12 @@ pgd_populate(struct mm_struct *mm, pgd_t * pgd_entry, pud_t * pud)
 
 static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr)
 {
-       return pgtable_quicklist_alloc();
+       return quicklist_alloc(0, GFP_KERNEL, NULL);
 }
 
 static inline void pud_free(pud_t * pud)
 {
-       pgtable_quicklist_free(pud);
+       quicklist_free(0, NULL, pud);
 }
 #define __pud_free_tlb(tlb, pud)       pud_free(pud)
 #endif /* CONFIG_PGTABLE_4 */
@@ -112,12 +59,12 @@ pud_populate(struct mm_struct *mm, pud_t * pud_entry, pmd_t * pmd)
 
 static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr)
 {
-       return pgtable_quicklist_alloc();
+       return quicklist_alloc(0, GFP_KERNEL, NULL);
 }
 
 static inline void pmd_free(pmd_t * pmd)
 {
-       pgtable_quicklist_free(pmd);
+       quicklist_free(0, NULL, pmd);
 }
 
 #define __pmd_free_tlb(tlb, pmd)       pmd_free(pmd)
@@ -137,28 +84,31 @@ pmd_populate_kernel(struct mm_struct *mm, pmd_t * pmd_entry, pte_t * pte)
 static inline struct page *pte_alloc_one(struct mm_struct *mm,
                                         unsigned long addr)
 {
-       void *pg = pgtable_quicklist_alloc();
+       void *pg = quicklist_alloc(0, GFP_KERNEL, NULL);
        return pg ? virt_to_page(pg) : NULL;
 }
 
 static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
                                          unsigned long addr)
 {
-       return pgtable_quicklist_alloc();
+       return quicklist_alloc(0, GFP_KERNEL, NULL);
 }
 
 static inline void pte_free(struct page *pte)
 {
-       pgtable_quicklist_free(page_address(pte));
+       quicklist_free_page(0, NULL, pte);
 }
 
 static inline void pte_free_kernel(pte_t * pte)
 {
-       pgtable_quicklist_free(pte);
+       quicklist_free(0, NULL, pte);
 }
 
-#define __pte_free_tlb(tlb, pte)       pte_free(pte)
+static inline void check_pgt_cache(void)
+{
+       quicklist_trim(0, NULL, 25, 16);
+}
 
-extern void check_pgt_cache(void);
+#define __pte_free_tlb(tlb, pte)       pte_free(pte)
 
 #endif                         /* _ASM_IA64_PGALLOC_H */
index 861c8ec87b095374c942b593ba91b3108d86c79a..f049bc40ca7d5378ce878ff7063c70dce9733e2a 100644 (file)
 #define __NR_vmsplice                  1302
 /* 1303 reserved for move_pages */
 #define __NR_getcpu                    1304
+#define __NR_epoll_pwait               1305
+#define __NR_utimensat                 1306
 
 #ifdef __KERNEL__
 
 
-#define NR_syscalls                    281 /* length of syscall table */
+#define NR_syscalls                    283 /* length of syscall table */
 
 #define __ARCH_WANT_SYS_RT_SIGACTION
 #define __ARCH_WANT_SYS_RT_SIGSUSPEND
index ddde0ef9ccdcbb4dbd8834accc5f0264deee8403..b4f1674fca7987d8f99fa707eb2655cd20f0bc37 100644 (file)
@@ -27,6 +27,10 @@ static int irq_affinity_read_proc(char *page, char **start, off_t off,
        return len;
 }
 
+#ifndef is_affinity_mask_valid
+#define is_affinity_mask_valid(val) 1
+#endif
+
 int no_irq_affinity;
 static int irq_affinity_write_proc(struct file *file, const char __user *buffer,
                                   unsigned long count, void *data)
@@ -42,6 +46,9 @@ static int irq_affinity_write_proc(struct file *file, const char __user *buffer,
        if (err)
                return err;
 
+       if (!is_affinity_mask_valid(new_value))
+               return -EINVAL;
+
        /*
         * Do not allow disabling IRQs completely - it's a too easy
         * way to make the system unusable accidentally :-) At least