Commit 69048e01881747e27457cd514a6b85d925982046

Authored by Linus Torvalds

Merge branch 'parisc-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux

Pull parisc updates from Helge Deller:
 "The three major changes in this patchset is a implementation for
  flexible userspace memory maps, cache-flushing fixes (again), and a
  long-discussed ABI change to make EWOULDBLOCK the same value as
  EAGAIN.

  parisc has been the only platform where we had EWOULDBLOCK != EAGAIN
  to keep HP-UX compatibility.  Since we will probably never implement
  full HP-UX support, we prefer to drop this compatibility to make it
  easier for us with Linux userspace programs which mostly never checked
  for both values.  We don't expect major fall-outs because of this
  change, and if we face some, we will simply rebuild the necessary
  applications in the debian archives"

* 'parisc-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
  parisc: add flexible mmap memory layout support
  parisc: Make EWOULDBLOCK be equal to EAGAIN on parisc
  parisc: convert uapi/asm/stat.h to use native types only
  parisc: wire up sched_setattr and sched_getattr
  parisc: fix cache-flushing
  parisc/sti_console: prefer Linux fonts over built-in ROM fonts

Showing 15 changed files Side-by-side Diff

arch/parisc/include/asm/cacheflush.h
... ... @@ -132,7 +132,6 @@
132 132 static inline void *kmap(struct page *page)
133 133 {
134 134 might_sleep();
135   - flush_dcache_page(page);
136 135 return page_address(page);
137 136 }
138 137  
... ... @@ -144,7 +143,6 @@
144 143 static inline void *kmap_atomic(struct page *page)
145 144 {
146 145 pagefault_disable();
147   - flush_dcache_page(page);
148 146 return page_address(page);
149 147 }
150 148  
arch/parisc/include/asm/elf.h
... ... @@ -348,5 +348,9 @@
348 348  
349 349 #define ELF_HWCAP 0
350 350  
  351 +struct mm_struct;
  352 +extern unsigned long arch_randomize_brk(struct mm_struct *);
  353 +#define arch_randomize_brk arch_randomize_brk
  354 +
351 355 #endif
arch/parisc/include/asm/page.h
... ... @@ -29,7 +29,8 @@
29 29 void clear_page_asm(void *page);
30 30 void copy_page_asm(void *to, void *from);
31 31 #define clear_user_page(vto, vaddr, page) clear_page_asm(vto)
32   -#define copy_user_page(vto, vfrom, vaddr, page) copy_page_asm(vto, vfrom)
  32 +void copy_user_page(void *vto, void *vfrom, unsigned long vaddr,
  33 + struct page *pg);
33 34  
34 35 /* #define CONFIG_PARISC_TMPALIAS */
35 36  
arch/parisc/include/asm/pgtable.h
... ... @@ -511,6 +511,7 @@
511 511 /* We provide our own get_unmapped_area to provide cache coherency */
512 512  
513 513 #define HAVE_ARCH_UNMAPPED_AREA
  514 +#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
514 515  
515 516 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
516 517 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR
arch/parisc/include/asm/processor.h
... ... @@ -30,6 +30,8 @@
30 30 #endif
31 31 #define current_text_addr() ({ void *pc; current_ia(pc); pc; })
32 32  
  33 +#define HAVE_ARCH_PICK_MMAP_LAYOUT
  34 +
33 35 #define TASK_SIZE_OF(tsk) ((tsk)->thread.task_size)
34 36 #define TASK_SIZE TASK_SIZE_OF(current)
35 37 #define TASK_UNMAPPED_BASE (current->thread.map_base)
arch/parisc/include/asm/thread_info.h
... ... @@ -76,6 +76,16 @@
76 76 #define _TIF_SYSCALL_TRACE_MASK (_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP | \
77 77 _TIF_BLOCKSTEP | _TIF_SYSCALL_AUDIT)
78 78  
  79 +#ifdef CONFIG_64BIT
  80 +# ifdef CONFIG_COMPAT
  81 +# define is_32bit_task() (test_thread_flag(TIF_32BIT))
  82 +# else
  83 +# define is_32bit_task() (0)
  84 +# endif
  85 +#else
  86 +# define is_32bit_task() (1)
  87 +#endif
  88 +
79 89 #endif /* __KERNEL__ */
80 90  
81 91 #endif /* _ASM_PARISC_THREAD_INFO_H */
arch/parisc/include/uapi/asm/errno.h
... ... @@ -106,7 +106,7 @@
106 106  
107 107 #define EALREADY 244 /* Operation already in progress */
108 108 #define EINPROGRESS 245 /* Operation now in progress */
109   -#define EWOULDBLOCK 246 /* Operation would block (Linux returns EAGAIN) */
  109 +#define EWOULDBLOCK EAGAIN /* Operation would block (Not HPUX compliant) */
110 110 #define ENOTEMPTY 247 /* Directory not empty */
111 111 #define ENAMETOOLONG 248 /* File name too long */
112 112 #define ELOOP 249 /* Too many symbolic links encountered */
arch/parisc/include/uapi/asm/stat.h
... ... @@ -5,67 +5,65 @@
5 5  
6 6 struct stat {
7 7 unsigned int st_dev; /* dev_t is 32 bits on parisc */
8   - ino_t st_ino; /* 32 bits */
9   - mode_t st_mode; /* 16 bits */
  8 + unsigned int st_ino; /* 32 bits */
  9 + unsigned short st_mode; /* 16 bits */
10 10 unsigned short st_nlink; /* 16 bits */
11 11 unsigned short st_reserved1; /* old st_uid */
12 12 unsigned short st_reserved2; /* old st_gid */
13 13 unsigned int st_rdev;
14   - off_t st_size;
15   - time_t st_atime;
  14 + signed int st_size;
  15 + signed int st_atime;
16 16 unsigned int st_atime_nsec;
17   - time_t st_mtime;
  17 + signed int st_mtime;
18 18 unsigned int st_mtime_nsec;
19   - time_t st_ctime;
  19 + signed int st_ctime;
20 20 unsigned int st_ctime_nsec;
21 21 int st_blksize;
22 22 int st_blocks;
23 23 unsigned int __unused1; /* ACL stuff */
24 24 unsigned int __unused2; /* network */
25   - ino_t __unused3; /* network */
  25 + unsigned int __unused3; /* network */
26 26 unsigned int __unused4; /* cnodes */
27 27 unsigned short __unused5; /* netsite */
28 28 short st_fstype;
29 29 unsigned int st_realdev;
30 30 unsigned short st_basemode;
31 31 unsigned short st_spareshort;
32   - uid_t st_uid;
33   - gid_t st_gid;
  32 + unsigned int st_uid;
  33 + unsigned int st_gid;
34 34 unsigned int st_spare4[3];
35 35 };
36 36  
37 37 #define STAT_HAVE_NSEC
38 38  
39   -typedef __kernel_off64_t off64_t;
40   -
41 39 struct hpux_stat64 {
42 40 unsigned int st_dev; /* dev_t is 32 bits on parisc */
43   - ino_t st_ino; /* 32 bits */
44   - mode_t st_mode; /* 16 bits */
  41 + unsigned int st_ino; /* 32 bits */
  42 + unsigned short st_mode; /* 16 bits */
45 43 unsigned short st_nlink; /* 16 bits */
46 44 unsigned short st_reserved1; /* old st_uid */
47 45 unsigned short st_reserved2; /* old st_gid */
48 46 unsigned int st_rdev;
49   - off64_t st_size;
50   - time_t st_atime;
  47 + signed long long st_size;
  48 + signed int st_atime;
51 49 unsigned int st_spare1;
52   - time_t st_mtime;
  50 + signed int st_mtime;
53 51 unsigned int st_spare2;
54   - time_t st_ctime;
  52 + signed int st_ctime;
55 53 unsigned int st_spare3;
56 54 int st_blksize;
57   - __u64 st_blocks;
  55 + unsigned long long st_blocks;
58 56 unsigned int __unused1; /* ACL stuff */
59 57 unsigned int __unused2; /* network */
60   - ino_t __unused3; /* network */
  58 + unsigned int __unused3; /* network */
61 59 unsigned int __unused4; /* cnodes */
62 60 unsigned short __unused5; /* netsite */
63 61 short st_fstype;
64 62 unsigned int st_realdev;
65 63 unsigned short st_basemode;
66 64 unsigned short st_spareshort;
67   - uid_t st_uid;
68   - gid_t st_gid;
  65 + unsigned int st_uid;
  66 + unsigned int st_gid;
69 67 unsigned int st_spare4[3];
70 68 };
71 69  
arch/parisc/include/uapi/asm/unistd.h
... ... @@ -826,8 +826,10 @@
826 826 #define __NR_process_vm_writev (__NR_Linux + 331)
827 827 #define __NR_kcmp (__NR_Linux + 332)
828 828 #define __NR_finit_module (__NR_Linux + 333)
  829 +#define __NR_sched_setattr (__NR_Linux + 334)
  830 +#define __NR_sched_getattr (__NR_Linux + 335)
829 831  
830   -#define __NR_Linux_syscalls (__NR_finit_module + 1)
  832 +#define __NR_Linux_syscalls (__NR_sched_getattr + 1)
831 833  
832 834  
833 835 #define __IGNORE_select /* newselect */
arch/parisc/kernel/cache.c
... ... @@ -388,6 +388,20 @@
388 388 }
389 389 EXPORT_SYMBOL(flush_kernel_dcache_page_addr);
390 390  
  391 +void copy_user_page(void *vto, void *vfrom, unsigned long vaddr,
  392 + struct page *pg)
  393 +{
  394 + /* Copy using kernel mapping. No coherency is needed (all in
  395 + kunmap) for the `to' page. However, the `from' page needs to
  396 + be flushed through a mapping equivalent to the user mapping
  397 + before it can be accessed through the kernel mapping. */
  398 + preempt_disable();
  399 + flush_dcache_page_asm(__pa(vfrom), vaddr);
  400 + preempt_enable();
  401 + copy_page_asm(vto, vfrom);
  402 +}
  403 +EXPORT_SYMBOL(copy_user_page);
  404 +
391 405 void purge_tlb_entries(struct mm_struct *mm, unsigned long addr)
392 406 {
393 407 unsigned long flags;
arch/parisc/kernel/process.c
... ... @@ -13,7 +13,7 @@
13 13 * Copyright (C) 2000 Grant Grundler <grundler with parisc-linux.org>
14 14 * Copyright (C) 2001 Alan Modra <amodra at parisc-linux.org>
15 15 * Copyright (C) 2001-2002 Ryan Bradetich <rbrad at parisc-linux.org>
16   - * Copyright (C) 2001-2007 Helge Deller <deller at parisc-linux.org>
  16 + * Copyright (C) 2001-2014 Helge Deller <deller@gmx.de>
17 17 * Copyright (C) 2002 Randolph Chung <tausq with parisc-linux.org>
18 18 *
19 19 *
... ... @@ -49,6 +49,7 @@
49 49 #include <linux/kallsyms.h>
50 50 #include <linux/uaccess.h>
51 51 #include <linux/rcupdate.h>
  52 +#include <linux/random.h>
52 53  
53 54 #include <asm/io.h>
54 55 #include <asm/asm-offsets.h>
... ... @@ -286,4 +287,22 @@
286 287 return ptr;
287 288 }
288 289 #endif
  290 +
  291 +static inline unsigned long brk_rnd(void)
  292 +{
  293 + /* 8MB for 32bit, 1GB for 64bit */
  294 + if (is_32bit_task())
  295 + return (get_random_int() & 0x7ffUL) << PAGE_SHIFT;
  296 + else
  297 + return (get_random_int() & 0x3ffffUL) << PAGE_SHIFT;
  298 +}
  299 +
  300 +unsigned long arch_randomize_brk(struct mm_struct *mm)
  301 +{
  302 + unsigned long ret = PAGE_ALIGN(mm->brk + brk_rnd());
  303 +
  304 + if (ret < mm->brk)
  305 + return mm->brk;
  306 + return ret;
  307 +}
arch/parisc/kernel/sys_parisc.c
... ... @@ -5,6 +5,7 @@
5 5 * Copyright (C) 1999-2003 Matthew Wilcox <willy at parisc-linux.org>
6 6 * Copyright (C) 2000-2003 Paul Bame <bame at parisc-linux.org>
7 7 * Copyright (C) 2001 Thomas Bogendoerfer <tsbogend at parisc-linux.org>
  8 + * Copyright (C) 1999-2014 Helge Deller <deller@gmx.de>
8 9 *
9 10 *
10 11 * This program is free software; you can redistribute it and/or modify
... ... @@ -23,6 +24,7 @@
23 24 */
24 25  
25 26 #include <asm/uaccess.h>
  27 +#include <asm/elf.h>
26 28 #include <linux/file.h>
27 29 #include <linux/fs.h>
28 30 #include <linux/linkage.h>
29 31  
30 32  
31 33  
32 34  
33 35  
34 36  
35 37  
36 38  
37 39  
38 40  
39 41  
40 42  
41 43  
42 44  
43 45  
44 46  
45 47  
46 48  
47 49  
48 50  
49 51  
... ... @@ -32,77 +34,229 @@
32 34 #include <linux/syscalls.h>
33 35 #include <linux/utsname.h>
34 36 #include <linux/personality.h>
  37 +#include <linux/random.h>
35 38  
36   -static unsigned long get_unshared_area(unsigned long addr, unsigned long len)
  39 +/* we construct an artificial offset for the mapping based on the physical
  40 + * address of the kernel mapping variable */
  41 +#define GET_LAST_MMAP(filp) \
  42 + (filp ? ((unsigned long) filp->f_mapping) >> 8 : 0UL)
  43 +#define SET_LAST_MMAP(filp, val) \
  44 + { /* nothing */ }
  45 +
  46 +static int get_offset(unsigned int last_mmap)
37 47 {
38   - struct vm_unmapped_area_info info;
  48 + return (last_mmap & (SHMLBA-1)) >> PAGE_SHIFT;
  49 +}
39 50  
40   - info.flags = 0;
41   - info.length = len;
42   - info.low_limit = PAGE_ALIGN(addr);
43   - info.high_limit = TASK_SIZE;
44   - info.align_mask = 0;
45   - info.align_offset = 0;
46   - return vm_unmapped_area(&info);
  51 +static unsigned long shared_align_offset(unsigned int last_mmap,
  52 + unsigned long pgoff)
  53 +{
  54 + return (get_offset(last_mmap) + pgoff) << PAGE_SHIFT;
47 55 }
48 56  
49   -/*
50   - * We need to know the offset to use. Old scheme was to look for
51   - * existing mapping and use the same offset. New scheme is to use the
52   - * address of the kernel data structure as the seed for the offset.
53   - * We'll see how that works...
54   - *
55   - * The mapping is cacheline aligned, so there's no information in the bottom
56   - * few bits of the address. We're looking for 10 bits (4MB / 4k), so let's
57   - * drop the bottom 8 bits and use bits 8-17.
58   - */
59   -static int get_offset(struct address_space *mapping)
  57 +static inline unsigned long COLOR_ALIGN(unsigned long addr,
  58 + unsigned int last_mmap, unsigned long pgoff)
60 59 {
61   - return (unsigned long) mapping >> 8;
  60 + unsigned long base = (addr+SHMLBA-1) & ~(SHMLBA-1);
  61 + unsigned long off = (SHMLBA-1) &
  62 + (shared_align_offset(last_mmap, pgoff) << PAGE_SHIFT);
  63 +
  64 + return base + off;
62 65 }
63 66  
64   -static unsigned long shared_align_offset(struct file *filp, unsigned long pgoff)
  67 +/*
  68 + * Top of mmap area (just below the process stack).
  69 + */
  70 +
  71 +static unsigned long mmap_upper_limit(void)
65 72 {
66   - struct address_space *mapping = filp ? filp->f_mapping : NULL;
  73 + unsigned long stack_base;
67 74  
68   - return (get_offset(mapping) + pgoff) << PAGE_SHIFT;
  75 + /* Limit stack size to 1GB - see setup_arg_pages() in fs/exec.c */
  76 + stack_base = rlimit_max(RLIMIT_STACK);
  77 + if (stack_base > (1 << 30))
  78 + stack_base = 1 << 30;
  79 +
  80 + return PAGE_ALIGN(STACK_TOP - stack_base);
69 81 }
70 82  
71   -static unsigned long get_shared_area(struct file *filp, unsigned long addr,
72   - unsigned long len, unsigned long pgoff)
  83 +
  84 +unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
  85 + unsigned long len, unsigned long pgoff, unsigned long flags)
73 86 {
  87 + struct mm_struct *mm = current->mm;
  88 + struct vm_area_struct *vma;
  89 + unsigned long task_size = TASK_SIZE;
  90 + int do_color_align, last_mmap;
74 91 struct vm_unmapped_area_info info;
75 92  
  93 + if (len > task_size)
  94 + return -ENOMEM;
  95 +
  96 + do_color_align = 0;
  97 + if (filp || (flags & MAP_SHARED))
  98 + do_color_align = 1;
  99 + last_mmap = GET_LAST_MMAP(filp);
  100 +
  101 + if (flags & MAP_FIXED) {
  102 + if ((flags & MAP_SHARED) && last_mmap &&
  103 + (addr - shared_align_offset(last_mmap, pgoff))
  104 + & (SHMLBA - 1))
  105 + return -EINVAL;
  106 + goto found_addr;
  107 + }
  108 +
  109 + if (addr) {
  110 + if (do_color_align && last_mmap)
  111 + addr = COLOR_ALIGN(addr, last_mmap, pgoff);
  112 + else
  113 + addr = PAGE_ALIGN(addr);
  114 +
  115 + vma = find_vma(mm, addr);
  116 + if (task_size - len >= addr &&
  117 + (!vma || addr + len <= vma->vm_start))
  118 + goto found_addr;
  119 + }
  120 +
76 121 info.flags = 0;
77 122 info.length = len;
78   - info.low_limit = PAGE_ALIGN(addr);
79   - info.high_limit = TASK_SIZE;
80   - info.align_mask = PAGE_MASK & (SHMLBA - 1);
81   - info.align_offset = shared_align_offset(filp, pgoff);
82   - return vm_unmapped_area(&info);
  123 + info.low_limit = mm->mmap_legacy_base;
  124 + info.high_limit = mmap_upper_limit();
  125 + info.align_mask = last_mmap ? (PAGE_MASK & (SHMLBA - 1)) : 0;
  126 + info.align_offset = shared_align_offset(last_mmap, pgoff);
  127 + addr = vm_unmapped_area(&info);
  128 +
  129 +found_addr:
  130 + if (do_color_align && !last_mmap && !(addr & ~PAGE_MASK))
  131 + SET_LAST_MMAP(filp, addr - (pgoff << PAGE_SHIFT));
  132 +
  133 + return addr;
83 134 }
84 135  
85   -unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
86   - unsigned long len, unsigned long pgoff, unsigned long flags)
  136 +unsigned long
  137 +arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
  138 + const unsigned long len, const unsigned long pgoff,
  139 + const unsigned long flags)
87 140 {
  141 + struct vm_area_struct *vma;
  142 + struct mm_struct *mm = current->mm;
  143 + unsigned long addr = addr0;
  144 + int do_color_align, last_mmap;
  145 + struct vm_unmapped_area_info info;
  146 +
  147 +#ifdef CONFIG_64BIT
  148 + /* This should only ever run for 32-bit processes. */
  149 + BUG_ON(!test_thread_flag(TIF_32BIT));
  150 +#endif
  151 +
  152 + /* requested length too big for entire address space */
88 153 if (len > TASK_SIZE)
89 154 return -ENOMEM;
  155 +
  156 + do_color_align = 0;
  157 + if (filp || (flags & MAP_SHARED))
  158 + do_color_align = 1;
  159 + last_mmap = GET_LAST_MMAP(filp);
  160 +
90 161 if (flags & MAP_FIXED) {
91   - if ((flags & MAP_SHARED) &&
92   - (addr - shared_align_offset(filp, pgoff)) & (SHMLBA - 1))
  162 + if ((flags & MAP_SHARED) && last_mmap &&
  163 + (addr - shared_align_offset(last_mmap, pgoff))
  164 + & (SHMLBA - 1))
93 165 return -EINVAL;
94   - return addr;
  166 + goto found_addr;
95 167 }
96   - if (!addr)
97   - addr = TASK_UNMAPPED_BASE;
98 168  
99   - if (filp || (flags & MAP_SHARED))
100   - addr = get_shared_area(filp, addr, len, pgoff);
101   - else
102   - addr = get_unshared_area(addr, len);
  169 + /* requesting a specific address */
  170 + if (addr) {
  171 + if (do_color_align && last_mmap)
  172 + addr = COLOR_ALIGN(addr, last_mmap, pgoff);
  173 + else
  174 + addr = PAGE_ALIGN(addr);
  175 + vma = find_vma(mm, addr);
  176 + if (TASK_SIZE - len >= addr &&
  177 + (!vma || addr + len <= vma->vm_start))
  178 + goto found_addr;
  179 + }
103 180  
  181 + info.flags = VM_UNMAPPED_AREA_TOPDOWN;
  182 + info.length = len;
  183 + info.low_limit = PAGE_SIZE;
  184 + info.high_limit = mm->mmap_base;
  185 + info.align_mask = last_mmap ? (PAGE_MASK & (SHMLBA - 1)) : 0;
  186 + info.align_offset = shared_align_offset(last_mmap, pgoff);
  187 + addr = vm_unmapped_area(&info);
  188 + if (!(addr & ~PAGE_MASK))
  189 + goto found_addr;
  190 + VM_BUG_ON(addr != -ENOMEM);
  191 +
  192 + /*
  193 + * A failed mmap() very likely causes application failure,
  194 + * so fall back to the bottom-up function here. This scenario
  195 + * can happen with large stack limits and large mmap()
  196 + * allocations.
  197 + */
  198 + return arch_get_unmapped_area(filp, addr0, len, pgoff, flags);
  199 +
  200 +found_addr:
  201 + if (do_color_align && !last_mmap && !(addr & ~PAGE_MASK))
  202 + SET_LAST_MMAP(filp, addr - (pgoff << PAGE_SHIFT));
  203 +
104 204 return addr;
105 205 }
  206 +
  207 +static int mmap_is_legacy(void)
  208 +{
  209 + if (current->personality & ADDR_COMPAT_LAYOUT)
  210 + return 1;
  211 +
  212 + /* parisc stack always grows up - so a unlimited stack should
  213 + * not be an indicator to use the legacy memory layout.
  214 + * if (rlimit(RLIMIT_STACK) == RLIM_INFINITY)
  215 + * return 1;
  216 + */
  217 +
  218 + return sysctl_legacy_va_layout;
  219 +}
  220 +
  221 +static unsigned long mmap_rnd(void)
  222 +{
  223 + unsigned long rnd = 0;
  224 +
  225 + /*
  226 + * 8 bits of randomness in 32bit mmaps, 20 address space bits
  227 + * 28 bits of randomness in 64bit mmaps, 40 address space bits
  228 + */
  229 + if (current->flags & PF_RANDOMIZE) {
  230 + if (is_32bit_task())
  231 + rnd = get_random_int() % (1<<8);
  232 + else
  233 + rnd = get_random_int() % (1<<28);
  234 + }
  235 + return rnd << PAGE_SHIFT;
  236 +}
  237 +
  238 +static unsigned long mmap_legacy_base(void)
  239 +{
  240 + return TASK_UNMAPPED_BASE + mmap_rnd();
  241 +}
  242 +
  243 +/*
  244 + * This function, called very early during the creation of a new
  245 + * process VM image, sets up which VM layout function to use:
  246 + */
  247 +void arch_pick_mmap_layout(struct mm_struct *mm)
  248 +{
  249 + mm->mmap_legacy_base = mmap_legacy_base();
  250 + mm->mmap_base = mmap_upper_limit();
  251 +
  252 + if (mmap_is_legacy()) {
  253 + mm->mmap_base = mm->mmap_legacy_base;
  254 + mm->get_unmapped_area = arch_get_unmapped_area;
  255 + } else {
  256 + mm->get_unmapped_area = arch_get_unmapped_area_topdown;
  257 + }
  258 +}
  259 +
106 260  
107 261 asmlinkage unsigned long sys_mmap2(unsigned long addr, unsigned long len,
108 262 unsigned long prot, unsigned long flags, unsigned long fd,
arch/parisc/kernel/syscall_table.S
... ... @@ -429,6 +429,8 @@
429 429 ENTRY_COMP(process_vm_writev)
430 430 ENTRY_SAME(kcmp)
431 431 ENTRY_SAME(finit_module)
  432 + ENTRY_SAME(sched_setattr)
  433 + ENTRY_SAME(sched_getattr) /* 335 */
432 434  
433 435 /* Nothing yet */
434 436  
drivers/video/console/sticore.c
... ... @@ -488,7 +488,7 @@
488 488 return 0;
489 489 }
490 490  
491   -#ifdef CONFIG_FONTS
  491 +#ifdef CONFIG_FONT_SUPPORT
492 492 static struct sti_cooked_font *
493 493 sti_select_fbfont(struct sti_cooked_rom *cooked_rom, const char *fbfont_name)
494 494 {
... ... @@ -9,7 +9,7 @@
9 9  
10 10 config FONTS
11 11 bool "Select compiled-in fonts"
12   - depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
  12 + depends on FRAMEBUFFER_CONSOLE
13 13 help
14 14 Say Y here if you would like to use fonts other than the default
15 15 your frame buffer console usually use.
... ... @@ -22,7 +22,7 @@
22 22  
23 23 config FONT_8x8
24 24 bool "VGA 8x8 font" if FONTS
25   - depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
  25 + depends on FRAMEBUFFER_CONSOLE
26 26 default y if !SPARC && !FONTS
27 27 help
28 28 This is the "high resolution" font for the VGA frame buffer (the one
... ... @@ -45,7 +45,7 @@
45 45  
46 46 config FONT_6x11
47 47 bool "Mac console 6x11 font (not supported by all drivers)" if FONTS
48   - depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
  48 + depends on FRAMEBUFFER_CONSOLE
49 49 default y if !SPARC && !FONTS && MAC
50 50 help
51 51 Small console font with Macintosh-style high-half glyphs. Some Mac