mirror of
https://github.com/adulau/aha.git
synced 2024-12-26 10:46:11 +00:00
Merge branch 'akpm'
* akpm: (182 commits) fbdev: bf54x-lq043fb: use kzalloc over kmalloc/memset fbdev: *bfin*: fix __dev{init,exit} markings fbdev: *bfin*: drop unnecessary calls to memset fbdev: bfin-t350mcqb-fb: drop unused local variables fbdev: blackfin has __raw I/O accessors, so use them in fb.h fbdev: s1d13xxxfb: add accelerated bitblt functions tcx: use standard fields for framebuffer physical address and length fbdev: add support for handoff from firmware to hw framebuffers intelfb: fix a bug when changing video timing fbdev: use framebuffer_release() for freeing fb_info structures radeon: P2G2CLK_ALWAYS_ONb tested twice, should 2nd be P2G2CLK_DAC_ALWAYS_ONb? s3c-fb: CPUFREQ frequency scaling support s3c-fb: fix resource releasing on error during probing carminefb: fix possible access beyond end of carmine_modedb[] acornfb: remove fb_mmap function mb862xxfb: use CONFIG_OF instead of CONFIG_PPC_OF mb862xxfb: restrict compliation of platform driver to PPC Samsung SoC Framebuffer driver: add Alpha Channel support atmel-lcdc: fix pixclock upper bound detection offb: use framebuffer_alloc() to allocate fb_info struct ... Manually fix up conflicts due to kmemcheck in mm/slab.c
This commit is contained in:
commit
517d08699b
247 changed files with 5676 additions and 2693 deletions
|
@ -246,7 +246,8 @@ void print_ioacct(struct taskstats *t)
|
|||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int c, rc, rep_len, aggr_len, len2, cmd_type;
|
||||
int c, rc, rep_len, aggr_len, len2;
|
||||
int cmd_type = TASKSTATS_CMD_ATTR_UNSPEC;
|
||||
__u16 id;
|
||||
__u32 mypid;
|
||||
|
||||
|
|
|
@ -229,10 +229,10 @@ kernel. It is the use of atomic counters to implement reference
|
|||
counting, and it works such that once the counter falls to zero it can
|
||||
be guaranteed that no other entity can be accessing the object:
|
||||
|
||||
static void obj_list_add(struct obj *obj)
|
||||
static void obj_list_add(struct obj *obj, struct list_head *head)
|
||||
{
|
||||
obj->active = 1;
|
||||
list_add(&obj->list);
|
||||
list_add(&obj->list, head);
|
||||
}
|
||||
|
||||
static void obj_list_del(struct obj *obj)
|
||||
|
|
|
@ -95,7 +95,7 @@ There is no way to change the vesafb video mode and/or timings after
|
|||
booting linux. If you are not happy with the 60 Hz refresh rate, you
|
||||
have these options:
|
||||
|
||||
* configure and load the DOS-Tools for your the graphics board (if
|
||||
* configure and load the DOS-Tools for the graphics board (if
|
||||
available) and boot linux with loadlin.
|
||||
* use a native driver (matroxfb/atyfb) instead if vesafb. If none
|
||||
is available, write a new one!
|
||||
|
|
|
@ -1003,11 +1003,13 @@ CHAPTER 3: PER-PROCESS PARAMETERS
|
|||
3.1 /proc/<pid>/oom_adj - Adjust the oom-killer score
|
||||
------------------------------------------------------
|
||||
|
||||
This file can be used to adjust the score used to select which processes
|
||||
should be killed in an out-of-memory situation. Giving it a high score will
|
||||
increase the likelihood of this process being killed by the oom-killer. Valid
|
||||
values are in the range -16 to +15, plus the special value -17, which disables
|
||||
oom-killing altogether for this process.
|
||||
This file can be used to adjust the score used to select which processes should
|
||||
be killed in an out-of-memory situation. The oom_adj value is a characteristic
|
||||
of the task's mm, so all threads that share an mm with pid will have the same
|
||||
oom_adj value. A high value will increase the likelihood of this process being
|
||||
killed by the oom-killer. Valid values are in the range -16 to +15 as
|
||||
explained below and a special value of -17, which disables oom-killing
|
||||
altogether for threads sharing pid's mm.
|
||||
|
||||
The process to be killed in an out-of-memory situation is selected among all others
|
||||
based on its badness score. This value equals the original memory size of the process
|
||||
|
@ -1021,6 +1023,9 @@ the parent's score if they do not share the same memory. Thus forking servers
|
|||
are the prime candidates to be killed. Having only one 'hungry' child will make
|
||||
parent less preferable than the child.
|
||||
|
||||
/proc/<pid>/oom_adj cannot be changed for kthreads since they are immune from
|
||||
oom-killing already.
|
||||
|
||||
/proc/<pid>/oom_score shows process' current badness score.
|
||||
|
||||
The following heuristics are then applied:
|
||||
|
|
|
@ -546,6 +546,10 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||
console=brl,ttyS0
|
||||
For now, only VisioBraille is supported.
|
||||
|
||||
consoleblank= [KNL] The console blank (screen saver) timeout in
|
||||
seconds. Defaults to 10*60 = 10mins. A value of 0
|
||||
disables the blank timer.
|
||||
|
||||
coredump_filter=
|
||||
[KNL] Change the default value for
|
||||
/proc/<pid>/coredump_filter.
|
||||
|
|
|
@ -233,8 +233,8 @@ These protections are added to score to judge whether this zone should be used
|
|||
for page allocation or should be reclaimed.
|
||||
|
||||
In this example, if normal pages (index=2) are required to this DMA zone and
|
||||
pages_high is used for watermark, the kernel judges this zone should not be
|
||||
used because pages_free(1355) is smaller than watermark + protection[2]
|
||||
watermark[WMARK_HIGH] is used for watermark, the kernel judges this zone should
|
||||
not be used because pages_free(1355) is smaller than watermark + protection[2]
|
||||
(4 + 2004 = 2008). If this protection value is 0, this zone would be used for
|
||||
normal page requirement. If requirement is DMA zone(index=0), protection[0]
|
||||
(=0) is used.
|
||||
|
@ -280,9 +280,10 @@ The default value is 65536.
|
|||
min_free_kbytes:
|
||||
|
||||
This is used to force the Linux VM to keep a minimum number
|
||||
of kilobytes free. The VM uses this number to compute a pages_min
|
||||
value for each lowmem zone in the system. Each lowmem zone gets
|
||||
a number of reserved free pages based proportionally on its size.
|
||||
of kilobytes free. The VM uses this number to compute a
|
||||
watermark[WMARK_MIN] value for each lowmem zone in the system.
|
||||
Each lowmem zone gets a number of reserved free pages based
|
||||
proportionally on its size.
|
||||
|
||||
Some minimal amount of memory is needed to satisfy PF_MEMALLOC
|
||||
allocations; if you set this to lower than 1024KB, your system will
|
||||
|
@ -314,10 +315,14 @@ min_unmapped_ratio:
|
|||
|
||||
This is available only on NUMA kernels.
|
||||
|
||||
A percentage of the total pages in each zone. Zone reclaim will only
|
||||
occur if more than this percentage of pages are file backed and unmapped.
|
||||
This is to insure that a minimal amount of local pages is still available for
|
||||
file I/O even if the node is overallocated.
|
||||
This is a percentage of the total pages in each zone. Zone reclaim will
|
||||
only occur if more than this percentage of pages are in a state that
|
||||
zone_reclaim_mode allows to be reclaimed.
|
||||
|
||||
If zone_reclaim_mode has the value 4 OR'd, then the percentage is compared
|
||||
against all file-backed unmapped pages including swapcache pages and tmpfs
|
||||
files. Otherwise, only unmapped pages backed by normal files but not tmpfs
|
||||
files and similar are considered.
|
||||
|
||||
The default is 1 percent.
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
obj- := dummy.o
|
||||
|
||||
# List of programs to build
|
||||
hostprogs-y := slabinfo
|
||||
hostprogs-y := slabinfo slqbinfo page-types
|
||||
|
||||
# Tell kbuild to always build the programs
|
||||
always := $(hostprogs-y)
|
||||
|
|
|
@ -75,15 +75,15 @@ Page stealing from process memory and shm is done if stealing the page would
|
|||
alleviate memory pressure on any zone in the page's node that has fallen below
|
||||
its watermark.
|
||||
|
||||
pages_min/pages_low/pages_high/low_on_memory/zone_wake_kswapd: These are
|
||||
per-zone fields, used to determine when a zone needs to be balanced. When
|
||||
the number of pages falls below pages_min, the hysteric field low_on_memory
|
||||
gets set. This stays set till the number of free pages becomes pages_high.
|
||||
When low_on_memory is set, page allocation requests will try to free some
|
||||
pages in the zone (providing GFP_WAIT is set in the request). Orthogonal
|
||||
to this, is the decision to poke kswapd to free some zone pages. That
|
||||
decision is not hysteresis based, and is done when the number of free
|
||||
pages is below pages_low; in which case zone_wake_kswapd is also set.
|
||||
watemark[WMARK_MIN/WMARK_LOW/WMARK_HIGH]/low_on_memory/zone_wake_kswapd: These
|
||||
are per-zone fields, used to determine when a zone needs to be balanced. When
|
||||
the number of pages falls below watermark[WMARK_MIN], the hysteric field
|
||||
low_on_memory gets set. This stays set till the number of free pages becomes
|
||||
watermark[WMARK_HIGH]. When low_on_memory is set, page allocation requests will
|
||||
try to free some pages in the zone (providing GFP_WAIT is set in the request).
|
||||
Orthogonal to this, is the decision to poke kswapd to free some zone pages.
|
||||
That decision is not hysteresis based, and is done when the number of free
|
||||
pages is below watermark[WMARK_LOW]; in which case zone_wake_kswapd is also set.
|
||||
|
||||
|
||||
(Good) Ideas that I have heard:
|
||||
|
|
698
Documentation/vm/page-types.c
Normal file
698
Documentation/vm/page-types.c
Normal file
|
@ -0,0 +1,698 @@
|
|||
/*
|
||||
* page-types: Tool for querying page flags
|
||||
*
|
||||
* Copyright (C) 2009 Intel corporation
|
||||
* Copyright (C) 2009 Wu Fengguang <fengguang.wu@intel.com>
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <stdint.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <getopt.h>
|
||||
#include <limits.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/errno.h>
|
||||
#include <sys/fcntl.h>
|
||||
|
||||
|
||||
/*
|
||||
* kernel page flags
|
||||
*/
|
||||
|
||||
#define KPF_BYTES 8
|
||||
#define PROC_KPAGEFLAGS "/proc/kpageflags"
|
||||
|
||||
/* copied from kpageflags_read() */
|
||||
#define KPF_LOCKED 0
|
||||
#define KPF_ERROR 1
|
||||
#define KPF_REFERENCED 2
|
||||
#define KPF_UPTODATE 3
|
||||
#define KPF_DIRTY 4
|
||||
#define KPF_LRU 5
|
||||
#define KPF_ACTIVE 6
|
||||
#define KPF_SLAB 7
|
||||
#define KPF_WRITEBACK 8
|
||||
#define KPF_RECLAIM 9
|
||||
#define KPF_BUDDY 10
|
||||
|
||||
/* [11-20] new additions in 2.6.31 */
|
||||
#define KPF_MMAP 11
|
||||
#define KPF_ANON 12
|
||||
#define KPF_SWAPCACHE 13
|
||||
#define KPF_SWAPBACKED 14
|
||||
#define KPF_COMPOUND_HEAD 15
|
||||
#define KPF_COMPOUND_TAIL 16
|
||||
#define KPF_HUGE 17
|
||||
#define KPF_UNEVICTABLE 18
|
||||
#define KPF_NOPAGE 20
|
||||
|
||||
/* [32-] kernel hacking assistances */
|
||||
#define KPF_RESERVED 32
|
||||
#define KPF_MLOCKED 33
|
||||
#define KPF_MAPPEDTODISK 34
|
||||
#define KPF_PRIVATE 35
|
||||
#define KPF_PRIVATE_2 36
|
||||
#define KPF_OWNER_PRIVATE 37
|
||||
#define KPF_ARCH 38
|
||||
#define KPF_UNCACHED 39
|
||||
|
||||
/* [48-] take some arbitrary free slots for expanding overloaded flags
|
||||
* not part of kernel API
|
||||
*/
|
||||
#define KPF_READAHEAD 48
|
||||
#define KPF_SLOB_FREE 49
|
||||
#define KPF_SLUB_FROZEN 50
|
||||
#define KPF_SLUB_DEBUG 51
|
||||
|
||||
#define KPF_ALL_BITS ((uint64_t)~0ULL)
|
||||
#define KPF_HACKERS_BITS (0xffffULL << 32)
|
||||
#define KPF_OVERLOADED_BITS (0xffffULL << 48)
|
||||
#define BIT(name) (1ULL << KPF_##name)
|
||||
#define BITS_COMPOUND (BIT(COMPOUND_HEAD) | BIT(COMPOUND_TAIL))
|
||||
|
||||
static char *page_flag_names[] = {
|
||||
[KPF_LOCKED] = "L:locked",
|
||||
[KPF_ERROR] = "E:error",
|
||||
[KPF_REFERENCED] = "R:referenced",
|
||||
[KPF_UPTODATE] = "U:uptodate",
|
||||
[KPF_DIRTY] = "D:dirty",
|
||||
[KPF_LRU] = "l:lru",
|
||||
[KPF_ACTIVE] = "A:active",
|
||||
[KPF_SLAB] = "S:slab",
|
||||
[KPF_WRITEBACK] = "W:writeback",
|
||||
[KPF_RECLAIM] = "I:reclaim",
|
||||
[KPF_BUDDY] = "B:buddy",
|
||||
|
||||
[KPF_MMAP] = "M:mmap",
|
||||
[KPF_ANON] = "a:anonymous",
|
||||
[KPF_SWAPCACHE] = "s:swapcache",
|
||||
[KPF_SWAPBACKED] = "b:swapbacked",
|
||||
[KPF_COMPOUND_HEAD] = "H:compound_head",
|
||||
[KPF_COMPOUND_TAIL] = "T:compound_tail",
|
||||
[KPF_HUGE] = "G:huge",
|
||||
[KPF_UNEVICTABLE] = "u:unevictable",
|
||||
[KPF_NOPAGE] = "n:nopage",
|
||||
|
||||
[KPF_RESERVED] = "r:reserved",
|
||||
[KPF_MLOCKED] = "m:mlocked",
|
||||
[KPF_MAPPEDTODISK] = "d:mappedtodisk",
|
||||
[KPF_PRIVATE] = "P:private",
|
||||
[KPF_PRIVATE_2] = "p:private_2",
|
||||
[KPF_OWNER_PRIVATE] = "O:owner_private",
|
||||
[KPF_ARCH] = "h:arch",
|
||||
[KPF_UNCACHED] = "c:uncached",
|
||||
|
||||
[KPF_READAHEAD] = "I:readahead",
|
||||
[KPF_SLOB_FREE] = "P:slob_free",
|
||||
[KPF_SLUB_FROZEN] = "A:slub_frozen",
|
||||
[KPF_SLUB_DEBUG] = "E:slub_debug",
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* data structures
|
||||
*/
|
||||
|
||||
static int opt_raw; /* for kernel developers */
|
||||
static int opt_list; /* list pages (in ranges) */
|
||||
static int opt_no_summary; /* don't show summary */
|
||||
static pid_t opt_pid; /* process to walk */
|
||||
|
||||
#define MAX_ADDR_RANGES 1024
|
||||
static int nr_addr_ranges;
|
||||
static unsigned long opt_offset[MAX_ADDR_RANGES];
|
||||
static unsigned long opt_size[MAX_ADDR_RANGES];
|
||||
|
||||
#define MAX_BIT_FILTERS 64
|
||||
static int nr_bit_filters;
|
||||
static uint64_t opt_mask[MAX_BIT_FILTERS];
|
||||
static uint64_t opt_bits[MAX_BIT_FILTERS];
|
||||
|
||||
static int page_size;
|
||||
|
||||
#define PAGES_BATCH (64 << 10) /* 64k pages */
|
||||
static int kpageflags_fd;
|
||||
static uint64_t kpageflags_buf[KPF_BYTES * PAGES_BATCH];
|
||||
|
||||
#define HASH_SHIFT 13
|
||||
#define HASH_SIZE (1 << HASH_SHIFT)
|
||||
#define HASH_MASK (HASH_SIZE - 1)
|
||||
#define HASH_KEY(flags) (flags & HASH_MASK)
|
||||
|
||||
static unsigned long total_pages;
|
||||
static unsigned long nr_pages[HASH_SIZE];
|
||||
static uint64_t page_flags[HASH_SIZE];
|
||||
|
||||
|
||||
/*
|
||||
* helper functions
|
||||
*/
|
||||
|
||||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
|
||||
|
||||
#define min_t(type, x, y) ({ \
|
||||
type __min1 = (x); \
|
||||
type __min2 = (y); \
|
||||
__min1 < __min2 ? __min1 : __min2; })
|
||||
|
||||
unsigned long pages2mb(unsigned long pages)
|
||||
{
|
||||
return (pages * page_size) >> 20;
|
||||
}
|
||||
|
||||
void fatal(const char *x, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, x);
|
||||
vfprintf(stderr, x, ap);
|
||||
va_end(ap);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* page flag names
|
||||
*/
|
||||
|
||||
char *page_flag_name(uint64_t flags)
|
||||
{
|
||||
static char buf[65];
|
||||
int present;
|
||||
int i, j;
|
||||
|
||||
for (i = 0, j = 0; i < ARRAY_SIZE(page_flag_names); i++) {
|
||||
present = (flags >> i) & 1;
|
||||
if (!page_flag_names[i]) {
|
||||
if (present)
|
||||
fatal("unkown flag bit %d\n", i);
|
||||
continue;
|
||||
}
|
||||
buf[j++] = present ? page_flag_names[i][0] : '_';
|
||||
}
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
char *page_flag_longname(uint64_t flags)
|
||||
{
|
||||
static char buf[1024];
|
||||
int i, n;
|
||||
|
||||
for (i = 0, n = 0; i < ARRAY_SIZE(page_flag_names); i++) {
|
||||
if (!page_flag_names[i])
|
||||
continue;
|
||||
if ((flags >> i) & 1)
|
||||
n += snprintf(buf + n, sizeof(buf) - n, "%s,",
|
||||
page_flag_names[i] + 2);
|
||||
}
|
||||
if (n)
|
||||
n--;
|
||||
buf[n] = '\0';
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* page list and summary
|
||||
*/
|
||||
|
||||
void show_page_range(unsigned long offset, uint64_t flags)
|
||||
{
|
||||
static uint64_t flags0;
|
||||
static unsigned long index;
|
||||
static unsigned long count;
|
||||
|
||||
if (flags == flags0 && offset == index + count) {
|
||||
count++;
|
||||
return;
|
||||
}
|
||||
|
||||
if (count)
|
||||
printf("%lu\t%lu\t%s\n",
|
||||
index, count, page_flag_name(flags0));
|
||||
|
||||
flags0 = flags;
|
||||
index = offset;
|
||||
count = 1;
|
||||
}
|
||||
|
||||
void show_page(unsigned long offset, uint64_t flags)
|
||||
{
|
||||
printf("%lu\t%s\n", offset, page_flag_name(flags));
|
||||
}
|
||||
|
||||
void show_summary(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
printf(" flags\tpage-count MB"
|
||||
" symbolic-flags\t\t\tlong-symbolic-flags\n");
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(nr_pages); i++) {
|
||||
if (nr_pages[i])
|
||||
printf("0x%016llx\t%10lu %8lu %s\t%s\n",
|
||||
(unsigned long long)page_flags[i],
|
||||
nr_pages[i],
|
||||
pages2mb(nr_pages[i]),
|
||||
page_flag_name(page_flags[i]),
|
||||
page_flag_longname(page_flags[i]));
|
||||
}
|
||||
|
||||
printf(" total\t%10lu %8lu\n",
|
||||
total_pages, pages2mb(total_pages));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* page flag filters
|
||||
*/
|
||||
|
||||
int bit_mask_ok(uint64_t flags)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < nr_bit_filters; i++) {
|
||||
if (opt_bits[i] == KPF_ALL_BITS) {
|
||||
if ((flags & opt_mask[i]) == 0)
|
||||
return 0;
|
||||
} else {
|
||||
if ((flags & opt_mask[i]) != opt_bits[i])
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
uint64_t expand_overloaded_flags(uint64_t flags)
|
||||
{
|
||||
/* SLOB/SLUB overload several page flags */
|
||||
if (flags & BIT(SLAB)) {
|
||||
if (flags & BIT(PRIVATE))
|
||||
flags ^= BIT(PRIVATE) | BIT(SLOB_FREE);
|
||||
if (flags & BIT(ACTIVE))
|
||||
flags ^= BIT(ACTIVE) | BIT(SLUB_FROZEN);
|
||||
if (flags & BIT(ERROR))
|
||||
flags ^= BIT(ERROR) | BIT(SLUB_DEBUG);
|
||||
}
|
||||
|
||||
/* PG_reclaim is overloaded as PG_readahead in the read path */
|
||||
if ((flags & (BIT(RECLAIM) | BIT(WRITEBACK))) == BIT(RECLAIM))
|
||||
flags ^= BIT(RECLAIM) | BIT(READAHEAD);
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
uint64_t well_known_flags(uint64_t flags)
|
||||
{
|
||||
/* hide flags intended only for kernel hacker */
|
||||
flags &= ~KPF_HACKERS_BITS;
|
||||
|
||||
/* hide non-hugeTLB compound pages */
|
||||
if ((flags & BITS_COMPOUND) && !(flags & BIT(HUGE)))
|
||||
flags &= ~BITS_COMPOUND;
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* page frame walker
|
||||
*/
|
||||
|
||||
int hash_slot(uint64_t flags)
|
||||
{
|
||||
int k = HASH_KEY(flags);
|
||||
int i;
|
||||
|
||||
/* Explicitly reserve slot 0 for flags 0: the following logic
|
||||
* cannot distinguish an unoccupied slot from slot (flags==0).
|
||||
*/
|
||||
if (flags == 0)
|
||||
return 0;
|
||||
|
||||
/* search through the remaining (HASH_SIZE-1) slots */
|
||||
for (i = 1; i < ARRAY_SIZE(page_flags); i++, k++) {
|
||||
if (!k || k >= ARRAY_SIZE(page_flags))
|
||||
k = 1;
|
||||
if (page_flags[k] == 0) {
|
||||
page_flags[k] = flags;
|
||||
return k;
|
||||
}
|
||||
if (page_flags[k] == flags)
|
||||
return k;
|
||||
}
|
||||
|
||||
fatal("hash table full: bump up HASH_SHIFT?\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
void add_page(unsigned long offset, uint64_t flags)
|
||||
{
|
||||
flags = expand_overloaded_flags(flags);
|
||||
|
||||
if (!opt_raw)
|
||||
flags = well_known_flags(flags);
|
||||
|
||||
if (!bit_mask_ok(flags))
|
||||
return;
|
||||
|
||||
if (opt_list == 1)
|
||||
show_page_range(offset, flags);
|
||||
else if (opt_list == 2)
|
||||
show_page(offset, flags);
|
||||
|
||||
nr_pages[hash_slot(flags)]++;
|
||||
total_pages++;
|
||||
}
|
||||
|
||||
void walk_pfn(unsigned long index, unsigned long count)
|
||||
{
|
||||
unsigned long batch;
|
||||
unsigned long n;
|
||||
unsigned long i;
|
||||
|
||||
if (index > ULONG_MAX / KPF_BYTES)
|
||||
fatal("index overflow: %lu\n", index);
|
||||
|
||||
lseek(kpageflags_fd, index * KPF_BYTES, SEEK_SET);
|
||||
|
||||
while (count) {
|
||||
batch = min_t(unsigned long, count, PAGES_BATCH);
|
||||
n = read(kpageflags_fd, kpageflags_buf, batch * KPF_BYTES);
|
||||
if (n == 0)
|
||||
break;
|
||||
if (n < 0) {
|
||||
perror(PROC_KPAGEFLAGS);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (n % KPF_BYTES != 0)
|
||||
fatal("partial read: %lu bytes\n", n);
|
||||
n = n / KPF_BYTES;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
add_page(index + i, kpageflags_buf[i]);
|
||||
|
||||
index += batch;
|
||||
count -= batch;
|
||||
}
|
||||
}
|
||||
|
||||
void walk_addr_ranges(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
kpageflags_fd = open(PROC_KPAGEFLAGS, O_RDONLY);
|
||||
if (kpageflags_fd < 0) {
|
||||
perror(PROC_KPAGEFLAGS);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (!nr_addr_ranges)
|
||||
walk_pfn(0, ULONG_MAX);
|
||||
|
||||
for (i = 0; i < nr_addr_ranges; i++)
|
||||
walk_pfn(opt_offset[i], opt_size[i]);
|
||||
|
||||
close(kpageflags_fd);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* user interface
|
||||
*/
|
||||
|
||||
const char *page_flag_type(uint64_t flag)
|
||||
{
|
||||
if (flag & KPF_HACKERS_BITS)
|
||||
return "(r)";
|
||||
if (flag & KPF_OVERLOADED_BITS)
|
||||
return "(o)";
|
||||
return " ";
|
||||
}
|
||||
|
||||
void usage(void)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
printf(
|
||||
"page-types [options]\n"
|
||||
" -r|--raw Raw mode, for kernel developers\n"
|
||||
" -a|--addr addr-spec Walk a range of pages\n"
|
||||
" -b|--bits bits-spec Walk pages with specified bits\n"
|
||||
#if 0 /* planned features */
|
||||
" -p|--pid pid Walk process address space\n"
|
||||
" -f|--file filename Walk file address space\n"
|
||||
#endif
|
||||
" -l|--list Show page details in ranges\n"
|
||||
" -L|--list-each Show page details one by one\n"
|
||||
" -N|--no-summary Don't show summay info\n"
|
||||
" -h|--help Show this usage message\n"
|
||||
"addr-spec:\n"
|
||||
" N one page at offset N (unit: pages)\n"
|
||||
" N+M pages range from N to N+M-1\n"
|
||||
" N,M pages range from N to M-1\n"
|
||||
" N, pages range from N to end\n"
|
||||
" ,M pages range from 0 to M\n"
|
||||
"bits-spec:\n"
|
||||
" bit1,bit2 (flags & (bit1|bit2)) != 0\n"
|
||||
" bit1,bit2=bit1 (flags & (bit1|bit2)) == bit1\n"
|
||||
" bit1,~bit2 (flags & (bit1|bit2)) == bit1\n"
|
||||
" =bit1,bit2 flags == (bit1|bit2)\n"
|
||||
"bit-names:\n"
|
||||
);
|
||||
|
||||
for (i = 0, j = 0; i < ARRAY_SIZE(page_flag_names); i++) {
|
||||
if (!page_flag_names[i])
|
||||
continue;
|
||||
printf("%16s%s", page_flag_names[i] + 2,
|
||||
page_flag_type(1ULL << i));
|
||||
if (++j > 3) {
|
||||
j = 0;
|
||||
putchar('\n');
|
||||
}
|
||||
}
|
||||
printf("\n "
|
||||
"(r) raw mode bits (o) overloaded bits\n");
|
||||
}
|
||||
|
||||
unsigned long long parse_number(const char *str)
|
||||
{
|
||||
unsigned long long n;
|
||||
|
||||
n = strtoll(str, NULL, 0);
|
||||
|
||||
if (n == 0 && str[0] != '0')
|
||||
fatal("invalid name or number: %s\n", str);
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
void parse_pid(const char *str)
|
||||
{
|
||||
opt_pid = parse_number(str);
|
||||
}
|
||||
|
||||
void parse_file(const char *name)
|
||||
{
|
||||
}
|
||||
|
||||
void add_addr_range(unsigned long offset, unsigned long size)
|
||||
{
|
||||
if (nr_addr_ranges >= MAX_ADDR_RANGES)
|
||||
fatal("too much addr ranges\n");
|
||||
|
||||
opt_offset[nr_addr_ranges] = offset;
|
||||
opt_size[nr_addr_ranges] = size;
|
||||
nr_addr_ranges++;
|
||||
}
|
||||
|
||||
void parse_addr_range(const char *optarg)
|
||||
{
|
||||
unsigned long offset;
|
||||
unsigned long size;
|
||||
char *p;
|
||||
|
||||
p = strchr(optarg, ',');
|
||||
if (!p)
|
||||
p = strchr(optarg, '+');
|
||||
|
||||
if (p == optarg) {
|
||||
offset = 0;
|
||||
size = parse_number(p + 1);
|
||||
} else if (p) {
|
||||
offset = parse_number(optarg);
|
||||
if (p[1] == '\0')
|
||||
size = ULONG_MAX;
|
||||
else {
|
||||
size = parse_number(p + 1);
|
||||
if (*p == ',') {
|
||||
if (size < offset)
|
||||
fatal("invalid range: %lu,%lu\n",
|
||||
offset, size);
|
||||
size -= offset;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
offset = parse_number(optarg);
|
||||
size = 1;
|
||||
}
|
||||
|
||||
add_addr_range(offset, size);
|
||||
}
|
||||
|
||||
void add_bits_filter(uint64_t mask, uint64_t bits)
|
||||
{
|
||||
if (nr_bit_filters >= MAX_BIT_FILTERS)
|
||||
fatal("too much bit filters\n");
|
||||
|
||||
opt_mask[nr_bit_filters] = mask;
|
||||
opt_bits[nr_bit_filters] = bits;
|
||||
nr_bit_filters++;
|
||||
}
|
||||
|
||||
uint64_t parse_flag_name(const char *str, int len)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!*str || !len)
|
||||
return 0;
|
||||
|
||||
if (len <= 8 && !strncmp(str, "compound", len))
|
||||
return BITS_COMPOUND;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(page_flag_names); i++) {
|
||||
if (!page_flag_names[i])
|
||||
continue;
|
||||
if (!strncmp(str, page_flag_names[i] + 2, len))
|
||||
return 1ULL << i;
|
||||
}
|
||||
|
||||
return parse_number(str);
|
||||
}
|
||||
|
||||
uint64_t parse_flag_names(const char *str, int all)
|
||||
{
|
||||
const char *p = str;
|
||||
uint64_t flags = 0;
|
||||
|
||||
while (1) {
|
||||
if (*p == ',' || *p == '=' || *p == '\0') {
|
||||
if ((*str != '~') || (*str == '~' && all && *++str))
|
||||
flags |= parse_flag_name(str, p - str);
|
||||
if (*p != ',')
|
||||
break;
|
||||
str = p + 1;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
void parse_bits_mask(const char *optarg)
|
||||
{
|
||||
uint64_t mask;
|
||||
uint64_t bits;
|
||||
const char *p;
|
||||
|
||||
p = strchr(optarg, '=');
|
||||
if (p == optarg) {
|
||||
mask = KPF_ALL_BITS;
|
||||
bits = parse_flag_names(p + 1, 0);
|
||||
} else if (p) {
|
||||
mask = parse_flag_names(optarg, 0);
|
||||
bits = parse_flag_names(p + 1, 0);
|
||||
} else if (strchr(optarg, '~')) {
|
||||
mask = parse_flag_names(optarg, 1);
|
||||
bits = parse_flag_names(optarg, 0);
|
||||
} else {
|
||||
mask = parse_flag_names(optarg, 0);
|
||||
bits = KPF_ALL_BITS;
|
||||
}
|
||||
|
||||
add_bits_filter(mask, bits);
|
||||
}
|
||||
|
||||
|
||||
struct option opts[] = {
|
||||
{ "raw" , 0, NULL, 'r' },
|
||||
{ "pid" , 1, NULL, 'p' },
|
||||
{ "file" , 1, NULL, 'f' },
|
||||
{ "addr" , 1, NULL, 'a' },
|
||||
{ "bits" , 1, NULL, 'b' },
|
||||
{ "list" , 0, NULL, 'l' },
|
||||
{ "list-each" , 0, NULL, 'L' },
|
||||
{ "no-summary", 0, NULL, 'N' },
|
||||
{ "help" , 0, NULL, 'h' },
|
||||
{ NULL , 0, NULL, 0 }
|
||||
};
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int c;
|
||||
|
||||
page_size = getpagesize();
|
||||
|
||||
while ((c = getopt_long(argc, argv,
|
||||
"rp:f:a:b:lLNh", opts, NULL)) != -1) {
|
||||
switch (c) {
|
||||
case 'r':
|
||||
opt_raw = 1;
|
||||
break;
|
||||
case 'p':
|
||||
parse_pid(optarg);
|
||||
break;
|
||||
case 'f':
|
||||
parse_file(optarg);
|
||||
break;
|
||||
case 'a':
|
||||
parse_addr_range(optarg);
|
||||
break;
|
||||
case 'b':
|
||||
parse_bits_mask(optarg);
|
||||
break;
|
||||
case 'l':
|
||||
opt_list = 1;
|
||||
break;
|
||||
case 'L':
|
||||
opt_list = 2;
|
||||
break;
|
||||
case 'N':
|
||||
opt_no_summary = 1;
|
||||
break;
|
||||
case 'h':
|
||||
usage();
|
||||
exit(0);
|
||||
default:
|
||||
usage();
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
if (opt_list == 1)
|
||||
printf("offset\tcount\tflags\n");
|
||||
if (opt_list == 2)
|
||||
printf("offset\tflags\n");
|
||||
|
||||
walk_addr_ranges();
|
||||
|
||||
if (opt_list == 1)
|
||||
show_page_range(0, 0); /* drain the buffer */
|
||||
|
||||
if (opt_no_summary)
|
||||
return 0;
|
||||
|
||||
if (opt_list)
|
||||
printf("\n\n");
|
||||
|
||||
show_summary();
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -12,9 +12,9 @@ There are three components to pagemap:
|
|||
value for each virtual page, containing the following data (from
|
||||
fs/proc/task_mmu.c, above pagemap_read):
|
||||
|
||||
* Bits 0-55 page frame number (PFN) if present
|
||||
* Bits 0-54 page frame number (PFN) if present
|
||||
* Bits 0-4 swap type if swapped
|
||||
* Bits 5-55 swap offset if swapped
|
||||
* Bits 5-54 swap offset if swapped
|
||||
* Bits 55-60 page shift (page size = 1<<page shift)
|
||||
* Bit 61 reserved for future use
|
||||
* Bit 62 page swapped
|
||||
|
@ -36,7 +36,7 @@ There are three components to pagemap:
|
|||
* /proc/kpageflags. This file contains a 64-bit set of flags for each
|
||||
page, indexed by PFN.
|
||||
|
||||
The flags are (from fs/proc/proc_misc, above kpageflags_read):
|
||||
The flags are (from fs/proc/page.c, above kpageflags_read):
|
||||
|
||||
0. LOCKED
|
||||
1. ERROR
|
||||
|
@ -49,6 +49,68 @@ There are three components to pagemap:
|
|||
8. WRITEBACK
|
||||
9. RECLAIM
|
||||
10. BUDDY
|
||||
11. MMAP
|
||||
12. ANON
|
||||
13. SWAPCACHE
|
||||
14. SWAPBACKED
|
||||
15. COMPOUND_HEAD
|
||||
16. COMPOUND_TAIL
|
||||
16. HUGE
|
||||
18. UNEVICTABLE
|
||||
20. NOPAGE
|
||||
|
||||
Short descriptions to the page flags:
|
||||
|
||||
0. LOCKED
|
||||
page is being locked for exclusive access, eg. by undergoing read/write IO
|
||||
|
||||
7. SLAB
|
||||
page is managed by the SLAB/SLOB/SLUB/SLQB kernel memory allocator
|
||||
When compound page is used, SLUB/SLQB will only set this flag on the head
|
||||
page; SLOB will not flag it at all.
|
||||
|
||||
10. BUDDY
|
||||
a free memory block managed by the buddy system allocator
|
||||
The buddy system organizes free memory in blocks of various orders.
|
||||
An order N block has 2^N physically contiguous pages, with the BUDDY flag
|
||||
set for and _only_ for the first page.
|
||||
|
||||
15. COMPOUND_HEAD
|
||||
16. COMPOUND_TAIL
|
||||
A compound page with order N consists of 2^N physically contiguous pages.
|
||||
A compound page with order 2 takes the form of "HTTT", where H donates its
|
||||
head page and T donates its tail page(s). The major consumers of compound
|
||||
pages are hugeTLB pages (Documentation/vm/hugetlbpage.txt), the SLUB etc.
|
||||
memory allocators and various device drivers. However in this interface,
|
||||
only huge/giga pages are made visible to end users.
|
||||
17. HUGE
|
||||
this is an integral part of a HugeTLB page
|
||||
|
||||
20. NOPAGE
|
||||
no page frame exists at the requested address
|
||||
|
||||
[IO related page flags]
|
||||
1. ERROR IO error occurred
|
||||
3. UPTODATE page has up-to-date data
|
||||
ie. for file backed page: (in-memory data revision >= on-disk one)
|
||||
4. DIRTY page has been written to, hence contains new data
|
||||
ie. for file backed page: (in-memory data revision > on-disk one)
|
||||
8. WRITEBACK page is being synced to disk
|
||||
|
||||
[LRU related page flags]
|
||||
5. LRU page is in one of the LRU lists
|
||||
6. ACTIVE page is in the active LRU list
|
||||
18. UNEVICTABLE page is in the unevictable (non-)LRU list
|
||||
It is somehow pinned and not a candidate for LRU page reclaims,
|
||||
eg. ramfs pages, shmctl(SHM_LOCK) and mlock() memory segments
|
||||
2. REFERENCED page has been referenced since last LRU list enqueue/requeue
|
||||
9. RECLAIM page will be reclaimed soon after its pageout IO completed
|
||||
11. MMAP a memory mapped page
|
||||
12. ANON a memory mapped page that is not part of a file
|
||||
13. SWAPCACHE page is mapped to swap space, ie. has an associated swap entry
|
||||
14. SWAPBACKED page is backed by swap/RAM
|
||||
|
||||
The page-types tool in this directory can be used to query the above flags.
|
||||
|
||||
Using pagemap to do something useful:
|
||||
|
||||
|
|
123
MAINTAINERS
123
MAINTAINERS
|
@ -36,6 +36,12 @@ trivial patch so apply some common sense.
|
|||
(scripts/checkpatch.pl) to catch trival style violations.
|
||||
See Documentation/CodingStyle for guidance here.
|
||||
|
||||
PLEASE CC: the maintainers and mailing lists that are generated
|
||||
by scripts/get_maintainer.pl. The results returned by the
|
||||
script will be best if you have git installed and are making
|
||||
your changes in a branch derived from Linus' latest git tree.
|
||||
See Documentation/SubmittingPatches for details.
|
||||
|
||||
PLEASE try to include any credit lines you want added with the
|
||||
patch. It avoids people being missed off by mistake and makes
|
||||
it easier to know who wants adding and who doesn't.
|
||||
|
@ -489,7 +495,7 @@ AOA (Apple Onboard Audio) ALSA DRIVER
|
|||
P: Johannes Berg
|
||||
M: johannes@sipsolutions.net
|
||||
L: linuxppc-dev@ozlabs.org
|
||||
L: alsa-devel@alsa-project.org (subscribers-only)
|
||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
F: sound/aoa/
|
||||
|
||||
|
@ -912,7 +918,6 @@ P: Dan Williams
|
|||
M: dan.j.williams@intel.com
|
||||
P: Maciej Sosnowski
|
||||
M: maciej.sosnowski@intel.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://sourceforge.net/projects/xscaleiop
|
||||
S: Supported
|
||||
F: Documentation/crypto/async-tx-api.txt
|
||||
|
@ -1008,7 +1013,6 @@ F: drivers/mmc/host/at91_mci.c
|
|||
ATMEL AT91 / AT32 SERIAL DRIVER
|
||||
P: Haavard Skinnemoen
|
||||
M: hskinnemoen@atmel.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/serial/atmel_serial.c
|
||||
|
||||
|
@ -1064,7 +1068,6 @@ F: kernel/audit*
|
|||
AUXILIARY DISPLAY DRIVERS
|
||||
P: Miguel Ojeda Sandonis
|
||||
M: miguel.ojeda.sandonis@gmail.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://miguelojeda.es/auxdisplay.htm
|
||||
W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
|
||||
S: Maintained
|
||||
|
@ -1134,7 +1137,6 @@ F: drivers/net/hamradio/baycom*
|
|||
BEFS FILE SYSTEM
|
||||
P: Sergey S. Kostyliov
|
||||
M: rathamahata@php4.ru
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/filesystems/befs.txt
|
||||
F: fs/befs/
|
||||
|
@ -1142,7 +1144,6 @@ F: fs/befs/
|
|||
BFS FILE SYSTEM
|
||||
P: Tigran A. Aivazian
|
||||
M: tigran@aivazian.fsnet.co.uk
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/filesystems/bfs.txt
|
||||
F: fs/bfs/
|
||||
|
@ -1199,7 +1200,6 @@ F: drivers/i2c/busses/i2c-bfin-twi.c
|
|||
BLOCK LAYER
|
||||
P: Jens Axboe
|
||||
M: axboe@kernel.dk
|
||||
L: linux-kernel@vger.kernel.org
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git
|
||||
S: Maintained
|
||||
F: block/
|
||||
|
@ -1326,7 +1326,6 @@ P: Muli Ben-Yehuda
|
|||
M: muli@il.ibm.com
|
||||
P: Jon D. Mason
|
||||
M: jdmason@kudzu.us
|
||||
L: linux-kernel@vger.kernel.org
|
||||
L: discuss@x86-64.org
|
||||
S: Maintained
|
||||
F: arch/x86/kernel/pci-calgary_64.c
|
||||
|
@ -1378,7 +1377,6 @@ F: include/linux/usb/wusb*
|
|||
CFAG12864B LCD DRIVER
|
||||
P: Miguel Ojeda Sandonis
|
||||
M: miguel.ojeda.sandonis@gmail.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://miguelojeda.es/auxdisplay.htm
|
||||
W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
|
||||
S: Maintained
|
||||
|
@ -1388,7 +1386,6 @@ F: include/linux/cfag12864b.h
|
|||
CFAG12864BFB LCD FRAMEBUFFER DRIVER
|
||||
P: Miguel Ojeda Sandonis
|
||||
M: miguel.ojeda.sandonis@gmail.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://miguelojeda.es/auxdisplay.htm
|
||||
W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
|
||||
S: Maintained
|
||||
|
@ -1408,7 +1405,6 @@ X: net/wireless/wext*
|
|||
CHECKPATCH
|
||||
P: Andy Whitcroft
|
||||
M: apw@canonical.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: scripts/checkpatch.pl
|
||||
|
||||
|
@ -1437,7 +1433,7 @@ F: drivers/usb/host/ohci-ep93xx.c
|
|||
CIRRUS LOGIC CS4270 SOUND DRIVER
|
||||
P: Timur Tabi
|
||||
M: timur@freescale.com
|
||||
L: alsa-devel@alsa-project.org
|
||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||
S: Supported
|
||||
F: sound/soc/codecs/cs4270*
|
||||
|
||||
|
@ -1462,6 +1458,7 @@ P: Joe Eykholt
|
|||
M: jeykholt@cisco.com
|
||||
L: linux-scsi@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/scsi/fnic/
|
||||
|
||||
CODA FILE SYSTEM
|
||||
P: Jan Harkes
|
||||
|
@ -1534,7 +1531,6 @@ F: drivers/usb/atm/cxacru.c
|
|||
CONFIGFS
|
||||
P: Joel Becker
|
||||
M: joel.becker@oracle.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: fs/configfs/
|
||||
F: include/linux/configfs.h
|
||||
|
@ -1592,7 +1588,6 @@ F: arch/x86/kernel/msr.c
|
|||
CPUSETS
|
||||
P: Paul Menage
|
||||
M: menage@google.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://www.bullopensource.org/cpuset/
|
||||
W: http://oss.sgi.com/projects/cpusets/
|
||||
S: Supported
|
||||
|
@ -1799,7 +1794,6 @@ DEVICE NUMBER REGISTRY
|
|||
P: Torben Mathiasen
|
||||
M: device@lanana.org
|
||||
W: http://lanana.org/docs/device-list/index.html
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
DEVICE-MAPPER (LVM)
|
||||
|
@ -1825,7 +1819,6 @@ F: drivers/char/digi*
|
|||
DIRECTORY NOTIFICATION (DNOTIFY)
|
||||
P: Eric Paris
|
||||
M: eparis@parisplace.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/filesystems/dnotify.txt
|
||||
F: fs/notify/dnotify/
|
||||
|
@ -1842,7 +1835,6 @@ S: Maintained
|
|||
DISKQUOTA
|
||||
P: Jan Kara
|
||||
M: jack@suse.cz
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/filesystems/quota.txt
|
||||
F: fs/quota/
|
||||
|
@ -1864,7 +1856,6 @@ P: Maciej Sosnowski
|
|||
M: maciej.sosnowski@intel.com
|
||||
P: Dan Williams
|
||||
M: dan.j.williams@intel.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/dma/
|
||||
F: include/linux/dma*
|
||||
|
@ -1916,7 +1907,6 @@ F: drivers/scsi/dpt/
|
|||
DRIVER CORE, KOBJECTS, AND SYSFS
|
||||
P: Greg Kroah-Hartman
|
||||
M: gregkh@suse.de
|
||||
L: linux-kernel@vger.kernel.org
|
||||
T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
|
||||
S: Supported
|
||||
F: Documentation/kobject.txt
|
||||
|
@ -1982,8 +1972,8 @@ F: net/bridge/netfilter/ebt*.c
|
|||
ECRYPT FILE SYSTEM
|
||||
P: Tyler Hicks
|
||||
M: tyhicks@linux.vnet.ibm.com
|
||||
M: Dustin Kirkland
|
||||
P: kirkland@canonical.com
|
||||
P: Dustin Kirkland
|
||||
M: kirkland@canonical.com
|
||||
L: ecryptfs-devel@lists.launchpad.net
|
||||
W: https://launchpad.net/ecryptfs
|
||||
S: Supported
|
||||
|
@ -2263,7 +2253,6 @@ F: drivers/firewire/
|
|||
F: include/linux/firewire*.h
|
||||
|
||||
FIRMWARE LOADER (request_firmware)
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Orphan
|
||||
F: Documentation/firmware_class/
|
||||
F: drivers/base/firmware*.c
|
||||
|
@ -2300,7 +2289,6 @@ M: leoli@freescale.com
|
|||
P: Zhang Wei
|
||||
M: zw@zh-kernel.org
|
||||
L: linuxppc-dev@ozlabs.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/dma/fsldma.*
|
||||
|
||||
|
@ -2366,7 +2354,7 @@ F: drivers/serial/ucc_uart.c
|
|||
FREESCALE SOC SOUND DRIVERS
|
||||
P: Timur Tabi
|
||||
M: timur@freescale.com
|
||||
L: alsa-devel@alsa-project.org
|
||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||
L: linuxppc-dev@ozlabs.org
|
||||
S: Supported
|
||||
F: sound/soc/fsl/fsl*
|
||||
|
@ -2500,7 +2488,6 @@ F: drivers/hwmon/hdaps.c
|
|||
|
||||
HYPERVISOR VIRTUAL CONSOLE DRIVER
|
||||
L: linuxppc-dev@ozlabs.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Odd Fixes
|
||||
F: drivers/char/hvc_*
|
||||
|
||||
|
@ -2567,7 +2554,6 @@ F: sound/parisc/harmony.*
|
|||
HAYES ESP SERIAL DRIVER
|
||||
P: Andrew J. Robinson
|
||||
M: arobinso@nyx.net
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://www.nyx.net/~arobinso
|
||||
S: Maintained
|
||||
F: Documentation/serial/hayes-esp.txt
|
||||
|
@ -2593,7 +2579,6 @@ F: include/linux/cciss_ioctl.h
|
|||
HFS FILESYSTEM
|
||||
P: Roman Zippel
|
||||
M: zippel@linux-m68k.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/filesystems/hfs.txt
|
||||
F: fs/hfs/
|
||||
|
@ -2633,7 +2618,6 @@ F: include/linux/hid*
|
|||
HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS
|
||||
P: Thomas Gleixner
|
||||
M: tglx@linutronix.de
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/timers/
|
||||
F: kernel/hrtimer.c
|
||||
|
@ -2772,7 +2756,6 @@ F: drivers/i2c/busses/i2c-tiny-usb.c
|
|||
i386 BOOT CODE
|
||||
P: H. Peter Anvin
|
||||
M: hpa@zytor.com
|
||||
L: Linux-Kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: arch/x86/boot/
|
||||
|
||||
|
@ -2902,7 +2885,6 @@ P: Robert Love
|
|||
M: rlove@rlove.org
|
||||
P: Eric Paris
|
||||
M: eparis@parisplace.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/filesystems/inotify.txt
|
||||
F: fs/notify/inotify/
|
||||
|
@ -2950,7 +2932,6 @@ F: arch/x86/kernel/microcode_intel.c
|
|||
INTEL I/OAT DMA DRIVER
|
||||
P: Maciej Sosnowski
|
||||
M: maciej.sosnowski@intel.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/dma/ioat*
|
||||
|
||||
|
@ -2966,7 +2947,6 @@ F: include/linux/intel-iommu.h
|
|||
INTEL IOP-ADMA DMA DRIVER
|
||||
P: Dan Williams
|
||||
M: dan.j.williams@intel.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/dma/iop-adma.c
|
||||
|
||||
|
@ -3279,7 +3259,6 @@ M: vgoyal@redhat.com
|
|||
P: Haren Myneni
|
||||
M: hbabu@us.ibm.com
|
||||
L: kexec@lists.infradead.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://lse.sourceforge.net/kdump/
|
||||
S: Maintained
|
||||
F: Documentation/kdump/
|
||||
|
@ -3389,7 +3368,6 @@ KEXEC
|
|||
P: Eric Biederman
|
||||
M: ebiederm@xmission.com
|
||||
W: http://ftp.kernel.org/pub/linux/kernel/people/horms/kexec-tools/
|
||||
L: linux-kernel@vger.kernel.org
|
||||
L: kexec@lists.infradead.org
|
||||
S: Maintained
|
||||
F: include/linux/kexec.h
|
||||
|
@ -3427,7 +3405,6 @@ F: mm/kmemleak-test.c
|
|||
KMEMTRACE
|
||||
P: Eduard - Gabriel Munteanu
|
||||
M: eduard.munteanu@linux360.ro
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/trace/kmemtrace.txt
|
||||
F: include/trace/kmemtrace.h
|
||||
|
@ -3442,7 +3419,6 @@ P: David S. Miller
|
|||
M: davem@davemloft.net
|
||||
P: Masami Hiramatsu
|
||||
M: mhiramat@redhat.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/kprobes.txt
|
||||
F: include/linux/kprobes.h
|
||||
|
@ -3451,7 +3427,6 @@ F: kernel/kprobes.c
|
|||
KS0108 LCD CONTROLLER DRIVER
|
||||
P: Miguel Ojeda Sandonis
|
||||
M: miguel.ojeda.sandonis@gmail.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://miguelojeda.es/auxdisplay.htm
|
||||
W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
|
||||
S: Maintained
|
||||
|
@ -3615,7 +3590,6 @@ P: Peter Zijlstra
|
|||
M: peterz@infradead.org
|
||||
P: Ingo Molnar
|
||||
M: mingo@redhat.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-lockdep.git
|
||||
S: Maintained
|
||||
F: Documentation/lockdep*.txt
|
||||
|
@ -3667,7 +3641,6 @@ L: linux-m32r-ja@ml.linux-m32r.org (in Japanese)
|
|||
W: http://www.linux-m32r.org/
|
||||
S: Maintained
|
||||
F: arch/m32r/
|
||||
F: include/asm-m32r/
|
||||
|
||||
M68K ARCHITECTURE
|
||||
P: Geert Uytterhoeven
|
||||
|
@ -3751,7 +3724,6 @@ F: include/linux/mv643xx.h
|
|||
MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
|
||||
P: Nicolas Pitre
|
||||
M: nico@cam.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
MARVELL YUKON / SYSKONNECT DRIVER
|
||||
|
@ -3805,7 +3777,6 @@ F: drivers/scsi/megaraid/
|
|||
|
||||
MEMORY MANAGEMENT
|
||||
L: linux-mm@kvack.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://www.linux-mm.org
|
||||
S: Maintained
|
||||
F: include/linux/mm.h
|
||||
|
@ -3819,7 +3790,6 @@ M: xemul@openvz.org
|
|||
P: KAMEZAWA Hiroyuki
|
||||
M: kamezawa.hiroyu@jp.fujitsu.com
|
||||
L: linux-mm@kvack.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: mm/memcontrol.c
|
||||
|
||||
|
@ -3862,7 +3832,6 @@ F: arch/mips/
|
|||
MISCELLANEOUS MCA-SUPPORT
|
||||
P: James Bottomley
|
||||
M: James.Bottomley@HansenPartnership.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/ia64/mca.txt
|
||||
F: Documentation/mca.txt
|
||||
|
@ -3872,7 +3841,6 @@ F: include/linux/mca*
|
|||
MODULE SUPPORT
|
||||
P: Rusty Russell
|
||||
M: rusty@rustcorp.com.au
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: include/linux/module.h
|
||||
F: kernel/module.c
|
||||
|
@ -3896,7 +3864,6 @@ F: drivers/mmc/host/imxmmc.*
|
|||
MOUSE AND MISC DEVICES [GENERAL]
|
||||
P: Alessandro Rubini
|
||||
M: rubini@ipvvis.unipv.it
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/input/mouse/
|
||||
F: include/linux/gpio_mouse.h
|
||||
|
@ -3904,7 +3871,6 @@ F: include/linux/gpio_mouse.h
|
|||
MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD
|
||||
P: Jiri Slaby
|
||||
M: jirislaby@gmail.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/serial/moxa-smartio
|
||||
F: drivers/char/mxser.*
|
||||
|
@ -3920,7 +3886,6 @@ F: drivers/platform/x86/msi-laptop.c
|
|||
MULTIFUNCTION DEVICES (MFD)
|
||||
P: Samuel Ortiz
|
||||
M: sameo@linux.intel.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6.git
|
||||
S: Supported
|
||||
F: drivers/mfd/
|
||||
|
@ -3928,7 +3893,6 @@ F: drivers/mfd/
|
|||
MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
|
||||
P: Pierre Ossman
|
||||
M: pierre@ossman.eu
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/mmc/
|
||||
F: include/linux/mmc/
|
||||
|
@ -3936,7 +3900,6 @@ F: include/linux/mmc/
|
|||
MULTIMEDIA CARD (MMC) ETC. OVER SPI
|
||||
P: David Brownell
|
||||
M: dbrownell@users.sourceforge.net
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Odd Fixes
|
||||
F: drivers/mmc/host/mmc_spi.c
|
||||
F: include/linux/spi/mmc_spi.h
|
||||
|
@ -3951,7 +3914,6 @@ F: sound/oss/msnd*
|
|||
MULTITECH MULTIPORT CARD (ISICOM)
|
||||
P: Jiri Slaby
|
||||
M: jirislaby@gmail.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/char/isicom.c
|
||||
F: include/linux/isicom.h
|
||||
|
@ -4195,7 +4157,6 @@ NTFS FILESYSTEM
|
|||
P: Anton Altaparmakov
|
||||
M: aia21@cantab.net
|
||||
L: linux-ntfs-dev@lists.sourceforge.net
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://www.linux-ntfs.org/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/aia21/ntfs-2.6.git
|
||||
S: Maintained
|
||||
|
@ -4429,7 +4390,6 @@ M: akataria@vmware.com
|
|||
P: Rusty Russell
|
||||
M: rusty@rustcorp.com.au
|
||||
L: virtualization@lists.osdl.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/ia64/paravirt_ops.txt
|
||||
F: arch/*/kernel/paravirt*
|
||||
|
@ -4480,7 +4440,6 @@ F: include/linux/leds-pca9532.h
|
|||
PCI ERROR RECOVERY
|
||||
P: Linas Vepstas
|
||||
M: linas@austin.ibm.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
L: linux-pci@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/PCI/pci-error-recovery.txt
|
||||
|
@ -4489,7 +4448,6 @@ F: Documentation/powerpc/eeh-pci-error-recovery.txt
|
|||
PCI SUBSYSTEM
|
||||
P: Jesse Barnes
|
||||
M: jbarnes@virtuousgeek.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
L: linux-pci@vger.kernel.org
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6.git
|
||||
S: Supported
|
||||
|
@ -4524,7 +4482,6 @@ F: drivers/net/pcnet32.c
|
|||
PER-TASK DELAY ACCOUNTING
|
||||
P: Balbir Singh
|
||||
M: balbir@linux.vnet.ibm.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: include/linux/delayacct.h
|
||||
F: kernel/delayacct.c
|
||||
|
@ -4556,7 +4513,6 @@ F: drivers/mtd/devices/phram.c
|
|||
PKTCDVD DRIVER
|
||||
P: Peter Osterlund
|
||||
M: petero2@telia.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/block/pktcdvd.c
|
||||
F: include/linux/pktcdvd.h
|
||||
|
@ -4564,7 +4520,6 @@ F: include/linux/pktcdvd.h
|
|||
POSIX CLOCKS and TIMERS
|
||||
P: Thomas Gleixner
|
||||
M: tglx@linutronix.de
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: fs/timerfd.c
|
||||
F: include/linux/timer*
|
||||
|
@ -4575,7 +4530,6 @@ P: Anton Vorontsov
|
|||
M: cbou@mail.ru
|
||||
P: David Woodhouse
|
||||
M: dwmw2@infradead.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
T: git git://git.infradead.org/battery-2.6.git
|
||||
S: Maintained
|
||||
F: include/linux/power_supply.h
|
||||
|
@ -4627,7 +4581,6 @@ F: include/linux/if_pppol2tp.h
|
|||
PREEMPTIBLE KERNEL
|
||||
P: Robert Love
|
||||
M: rml@tech9.net
|
||||
L: linux-kernel@vger.kernel.org
|
||||
L: kpreempt-tech@lists.sourceforge.net
|
||||
W: ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
|
||||
S: Supported
|
||||
|
@ -4690,7 +4643,6 @@ P: Roland McGrath
|
|||
M: roland@redhat.com
|
||||
P: Oleg Nesterov
|
||||
M: oleg@redhat.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: include/asm-generic/syscall.h
|
||||
F: include/linux/ptrace.h
|
||||
|
@ -4776,7 +4728,6 @@ F: drivers/net/qlge/
|
|||
QNX4 FILESYSTEM
|
||||
P: Anders Larsen
|
||||
M: al@alarsen.net
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://www.alarsen.net/linux/qnx4fs/
|
||||
S: Maintained
|
||||
F: fs/qnx4/
|
||||
|
@ -4823,7 +4774,6 @@ F: drivers/char/random.c
|
|||
RAPIDIO SUBSYSTEM
|
||||
P: Matt Porter
|
||||
M: mporter@kernel.crashing.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/rapidio/
|
||||
|
||||
|
@ -4837,7 +4787,8 @@ F: drivers/net/wireless/ray*
|
|||
RCUTORTURE MODULE
|
||||
P: Josh Triplett
|
||||
M: josh@freedesktop.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
P: Paul E. McKenney
|
||||
M: paulmck@linux.vnet.ibm.com
|
||||
S: Maintained
|
||||
F: Documentation/RCU/torture.txt
|
||||
F: kernel/rcutorture.c
|
||||
|
@ -4845,7 +4796,6 @@ F: kernel/rcutorture.c
|
|||
RDC R-321X SoC
|
||||
P: Florian Fainelli
|
||||
M: florian@openwrt.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
RDC R6040 FAST ETHERNET DRIVER
|
||||
|
@ -4865,8 +4815,9 @@ F: net/rds/
|
|||
READ-COPY UPDATE (RCU)
|
||||
P: Dipankar Sarma
|
||||
M: dipankar@in.ibm.com
|
||||
P: Paul E. McKenney
|
||||
M: paulmck@linux.vnet.ibm.com
|
||||
W: http://www.rdrop.com/users/paulmck/rclock/
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/RCU/rcu.txt
|
||||
F: Documentation/RCU/rcuref.txt
|
||||
|
@ -4877,7 +4828,6 @@ F: kernel/rcupdate.c
|
|||
REAL TIME CLOCK DRIVER
|
||||
P: Paul Gortmaker
|
||||
M: p_gortmaker@yahoo.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/rtc.txt
|
||||
F: drivers/rtc/
|
||||
|
@ -5015,7 +4965,6 @@ S3C24XX SD/MMC Driver
|
|||
P: Ben Dooks
|
||||
M: ben-linux@fluff.org
|
||||
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/mmc/host/s3cmci.*
|
||||
|
||||
|
@ -5041,7 +4990,6 @@ P: Ingo Molnar
|
|||
M: mingo@elte.hu
|
||||
P: Peter Zijlstra
|
||||
M: peterz@infradead.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: kernel/sched*
|
||||
F: include/linux/sched.h
|
||||
|
@ -5143,7 +5091,6 @@ F: drivers/mmc/host/sdhci.*
|
|||
SECURITY SUBSYSTEM
|
||||
P: James Morris
|
||||
M: jmorris@namei.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
L: linux-security-module@vger.kernel.org (suggested Cc:)
|
||||
T: git git://www.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
|
||||
W: http://security.wiki.kernel.org/
|
||||
|
@ -5162,7 +5109,6 @@ P: James Morris
|
|||
M: jmorris@namei.org
|
||||
P: Eric Paris
|
||||
M: eparis@parisplace.org
|
||||
L: linux-kernel@vger.kernel.org (kernel issues)
|
||||
L: selinux@tycho.nsa.gov (subscribers-only, general discussion)
|
||||
W: http://selinuxproject.org
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
|
||||
|
@ -5425,7 +5371,6 @@ F: include/linux/sony-laptop.h
|
|||
SONY MEMORYSTICK CARD SUPPORT
|
||||
P: Alex Dubov
|
||||
M: oakad@yahoo.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://tifmxx.berlios.de/
|
||||
S: Maintained
|
||||
F: drivers/memstick/host/tifm_ms.c
|
||||
|
@ -5435,7 +5380,7 @@ P: Jaroslav Kysela
|
|||
M: perex@perex.cz
|
||||
P: Takashi Iwai
|
||||
M: tiwai@suse.de
|
||||
L: alsa-devel@alsa-project.org (subscribers-only)
|
||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||
W: http://www.alsa-project.org/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git
|
||||
T: git git://git.alsa-project.org/alsa-kernel.git
|
||||
|
@ -5450,7 +5395,7 @@ M: lrg@slimlogic.co.uk
|
|||
P: Mark Brown
|
||||
M: broonie@opensource.wolfsonmicro.com
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6.git
|
||||
L: alsa-devel@alsa-project.org (subscribers-only)
|
||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||
W: http://alsa-project.org/main/index.php/ASoC
|
||||
S: Supported
|
||||
F: sound/soc/
|
||||
|
@ -5468,7 +5413,6 @@ F: arch/sparc/
|
|||
SPECIALIX IO8+ MULTIPORT SERIAL CARD DRIVER
|
||||
P: Roger Wolff
|
||||
M: R.E.Wolff@BitWizard.nl
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/serial/specialix.txt
|
||||
F: drivers/char/specialix*
|
||||
|
@ -5514,7 +5458,6 @@ F: fs/squashfs/
|
|||
SRM (Alpha) environment access
|
||||
P: Jan-Benedict Glaw
|
||||
M: jbglaw@lug-owl.de
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: arch/alpha/kernel/srm_env.c
|
||||
|
||||
|
@ -5529,7 +5472,6 @@ S: Maintained
|
|||
STAGING SUBSYSTEM
|
||||
P: Greg Kroah-Hartman
|
||||
M: gregkh@suse.de
|
||||
L: linux-kernel@vger.kernel.org
|
||||
T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
|
||||
S: Maintained
|
||||
F: drivers/staging/
|
||||
|
@ -5609,7 +5551,6 @@ F: include/linux/sysv_fs.h
|
|||
TASKSTATS STATISTICS INTERFACE
|
||||
P: Balbir Singh
|
||||
M: balbir@linux.vnet.ibm.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/accounting/taskstats*
|
||||
F: include/linux/taskstats*
|
||||
|
@ -5702,7 +5643,6 @@ P: Kentaro Takeda
|
|||
M: takedakn@nttdata.co.jp
|
||||
P: Tetsuo Handa
|
||||
M: penguin-kernel@I-love.SAKURA.ne.jp
|
||||
L: linux-kernel@vger.kernel.org (kernel issues)
|
||||
L: tomoyo-users-en@lists.sourceforge.jp (subscribers-only, for developers and users in English)
|
||||
L: tomoyo-dev@lists.sourceforge.jp (subscribers-only, for developers in Japanese)
|
||||
L: tomoyo-users@lists.sourceforge.jp (subscribers-only, for users in Japanese)
|
||||
|
@ -5754,14 +5694,17 @@ F: drivers/char/tpm/
|
|||
TRIVIAL PATCHES
|
||||
P: Jiri Kosina
|
||||
M: trivial@kernel.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git
|
||||
S: Maintained
|
||||
F: drivers/char/tty_*
|
||||
F: drivers/serial/serial_core.c
|
||||
F: include/linux/serial_core.h
|
||||
F: include/linux/serial.h
|
||||
F: include/linux/tty.h
|
||||
|
||||
TTY LAYER
|
||||
P: Alan Cox
|
||||
M: alan@lxorguk.ukuu.org.uk
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
T: stgit http://zeniv.linux.org.uk/~alan/ttydev/
|
||||
|
||||
|
@ -5834,7 +5777,6 @@ F: fs/udf/
|
|||
UFS FILESYSTEM
|
||||
P: Evgeniy Dushistov
|
||||
M: dushistov@mail.ru
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/filesystems/ufs.txt
|
||||
F: fs/ufs/
|
||||
|
@ -5851,7 +5793,6 @@ F: include/linux/uwb/
|
|||
UNIFORM CDROM DRIVER
|
||||
P: Jens Axboe
|
||||
M: axboe@kernel.dk
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://www.kernel.dk
|
||||
S: Maintained
|
||||
F: Documentation/cdrom/
|
||||
|
@ -5880,7 +5821,6 @@ F: drivers/usb/class/cdc-acm.*
|
|||
USB BLOCK DRIVER (UB ub)
|
||||
P: Pete Zaitcev
|
||||
M: zaitcev@redhat.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/block/ub.c
|
||||
|
@ -6226,7 +6166,6 @@ P: Hans J. Koch
|
|||
M: hjk@linutronix.de
|
||||
P: Greg Kroah-Hartman
|
||||
M: gregkh@suse.de
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/DocBook/uio-howto.tmpl
|
||||
F: drivers/uio/
|
||||
|
@ -6252,7 +6191,6 @@ F: drivers/video/uvesafb.*
|
|||
VFAT/FAT/MSDOS FILESYSTEM
|
||||
P: OGAWA Hirofumi
|
||||
M: hirofumi@mail.parknet.co.jp
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/filesystems/vfat.txt
|
||||
F: fs/fat/
|
||||
|
@ -6296,6 +6234,14 @@ F: drivers/net/macvlan.c
|
|||
F: include/linux/if_*vlan.h
|
||||
F: net/8021q/
|
||||
|
||||
VLYNQ BUS
|
||||
P: Florian Fainelli
|
||||
M: florian@openwrt.org
|
||||
L: openwrt-devel@lists.openwrt.org
|
||||
S: Maintained
|
||||
F: drivers/vlynq/vlynq.c
|
||||
F: include/linux/vlynq.h
|
||||
|
||||
VOLTAGE AND CURRENT REGULATOR FRAMEWORK
|
||||
P: Liam Girdwood
|
||||
M: lrg@slimlogic.co.uk
|
||||
|
@ -6349,7 +6295,6 @@ F: drivers/hwmon/w83793.c
|
|||
W83L51xD SD/MMC CARD INTERFACE DRIVER
|
||||
P: Pierre Ossman
|
||||
M: pierre@ossman.eu
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/mmc/host/wbsd.*
|
||||
|
||||
|
@ -6436,7 +6381,6 @@ M: mingo@redhat.com
|
|||
P: H. Peter Anvin
|
||||
M: hpa@zytor.com
|
||||
M: x86@kernel.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git
|
||||
S: Maintained
|
||||
F: Documentation/x86/
|
||||
|
@ -6472,7 +6416,6 @@ XILINX SYSTEMACE DRIVER
|
|||
P: Grant Likely
|
||||
M: grant.likely@secretlab.ca
|
||||
W: http://www.secretlab.ca/
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/block/xsysace.c
|
||||
|
||||
|
@ -6537,5 +6480,9 @@ F: drivers/serial/zs.*
|
|||
|
||||
THE REST
|
||||
P: Linus Torvalds
|
||||
M: torvalds@linux-foundation.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
|
||||
S: Buried alive in reporters
|
||||
F: *
|
||||
F: */
|
||||
|
|
|
@ -1,10 +1,3 @@
|
|||
/*
|
||||
* 8253/8254 Programmable Interval Timer
|
||||
*/
|
||||
|
||||
#ifndef _8253PIT_H
|
||||
#define _8253PIT_H
|
||||
|
||||
#define PIT_TICK_RATE 1193180UL
|
||||
|
||||
#endif
|
||||
|
|
|
@ -3,30 +3,12 @@
|
|||
|
||||
/* Dummy header just to define km_type. */
|
||||
|
||||
|
||||
#ifdef CONFIG_DEBUG_HIGHMEM
|
||||
# define D(n) __KM_FENCE_##n ,
|
||||
#else
|
||||
# define D(n)
|
||||
#define __WITH_KM_FENCE
|
||||
#endif
|
||||
|
||||
enum km_type {
|
||||
D(0) KM_BOUNCE_READ,
|
||||
D(1) KM_SKB_SUNRPC_DATA,
|
||||
D(2) KM_SKB_DATA_SOFTIRQ,
|
||||
D(3) KM_USER0,
|
||||
D(4) KM_USER1,
|
||||
D(5) KM_BIO_SRC_IRQ,
|
||||
D(6) KM_BIO_DST_IRQ,
|
||||
D(7) KM_PTE0,
|
||||
D(8) KM_PTE1,
|
||||
D(9) KM_IRQ0,
|
||||
D(10) KM_IRQ1,
|
||||
D(11) KM_SOFTIRQ0,
|
||||
D(12) KM_SOFTIRQ1,
|
||||
D(13) KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#undef D
|
||||
#undef __WITH_KM_FENCE
|
||||
|
||||
#endif
|
||||
|
|
|
@ -10,10 +10,7 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
struct task_struct init_task = INIT_TASK(init_task);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
EXPORT_SYMBOL(init_task);
|
||||
|
||||
union thread_union init_thread_union
|
||||
|
|
|
@ -227,7 +227,7 @@ struct irqaction timer_irqaction = {
|
|||
.name = "timer",
|
||||
};
|
||||
|
||||
static struct hw_interrupt_type rtc_irq_type = {
|
||||
static struct irq_chip rtc_irq_type = {
|
||||
.typename = "RTC",
|
||||
.startup = rtc_startup,
|
||||
.shutdown = rtc_enable_disable,
|
||||
|
|
|
@ -83,7 +83,7 @@ i8259a_end_irq(unsigned int irq)
|
|||
i8259a_enable_irq(irq);
|
||||
}
|
||||
|
||||
struct hw_interrupt_type i8259a_irq_type = {
|
||||
struct irq_chip i8259a_irq_type = {
|
||||
.typename = "XT-PIC",
|
||||
.startup = i8259a_startup_irq,
|
||||
.shutdown = i8259a_disable_irq,
|
||||
|
|
|
@ -36,7 +36,7 @@ extern void i8259a_disable_irq(unsigned int);
|
|||
extern void i8259a_mask_and_ack_irq(unsigned int);
|
||||
extern unsigned int i8259a_startup_irq(unsigned int);
|
||||
extern void i8259a_end_irq(unsigned int);
|
||||
extern struct hw_interrupt_type i8259a_irq_type;
|
||||
extern struct irq_chip i8259a_irq_type;
|
||||
extern void init_i8259a_irqs(void);
|
||||
|
||||
extern void handle_irq(int irq);
|
||||
|
|
|
@ -70,7 +70,7 @@ pyxis_mask_and_ack_irq(unsigned int irq)
|
|||
*(vulp)PYXIS_INT_MASK;
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type pyxis_irq_type = {
|
||||
static struct irq_chip pyxis_irq_type = {
|
||||
.typename = "PYXIS",
|
||||
.startup = pyxis_startup_irq,
|
||||
.shutdown = pyxis_disable_irq,
|
||||
|
|
|
@ -48,7 +48,7 @@ srm_end_irq(unsigned int irq)
|
|||
}
|
||||
|
||||
/* Handle interrupts from the SRM, assuming no additional weirdness. */
|
||||
static struct hw_interrupt_type srm_irq_type = {
|
||||
static struct irq_chip srm_irq_type = {
|
||||
.typename = "SRM",
|
||||
.startup = srm_startup_irq,
|
||||
.shutdown = srm_disable_irq,
|
||||
|
|
|
@ -252,9 +252,9 @@ reserve_std_resources(void)
|
|||
}
|
||||
|
||||
#define PFN_MAX PFN_DOWN(0x80000000)
|
||||
#define for_each_mem_cluster(memdesc, cluster, i) \
|
||||
for ((cluster) = (memdesc)->cluster, (i) = 0; \
|
||||
(i) < (memdesc)->numclusters; (i)++, (cluster)++)
|
||||
#define for_each_mem_cluster(memdesc, _cluster, i) \
|
||||
for ((_cluster) = (memdesc)->cluster, (i) = 0; \
|
||||
(i) < (memdesc)->numclusters; (i)++, (_cluster)++)
|
||||
|
||||
static unsigned long __init
|
||||
get_mem_size_limit(char *s)
|
||||
|
|
|
@ -89,7 +89,7 @@ alcor_end_irq(unsigned int irq)
|
|||
alcor_enable_irq(irq);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type alcor_irq_type = {
|
||||
static struct irq_chip alcor_irq_type = {
|
||||
.typename = "ALCOR",
|
||||
.startup = alcor_startup_irq,
|
||||
.shutdown = alcor_disable_irq,
|
||||
|
|
|
@ -71,7 +71,7 @@ cabriolet_end_irq(unsigned int irq)
|
|||
cabriolet_enable_irq(irq);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type cabriolet_irq_type = {
|
||||
static struct irq_chip cabriolet_irq_type = {
|
||||
.typename = "CABRIOLET",
|
||||
.startup = cabriolet_startup_irq,
|
||||
.shutdown = cabriolet_disable_irq,
|
||||
|
|
|
@ -198,7 +198,7 @@ clipper_set_affinity(unsigned int irq, const struct cpumask *affinity)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type dp264_irq_type = {
|
||||
static struct irq_chip dp264_irq_type = {
|
||||
.typename = "DP264",
|
||||
.startup = dp264_startup_irq,
|
||||
.shutdown = dp264_disable_irq,
|
||||
|
@ -209,7 +209,7 @@ static struct hw_interrupt_type dp264_irq_type = {
|
|||
.set_affinity = dp264_set_affinity,
|
||||
};
|
||||
|
||||
static struct hw_interrupt_type clipper_irq_type = {
|
||||
static struct irq_chip clipper_irq_type = {
|
||||
.typename = "CLIPPER",
|
||||
.startup = clipper_startup_irq,
|
||||
.shutdown = clipper_disable_irq,
|
||||
|
@ -298,7 +298,7 @@ clipper_srm_device_interrupt(unsigned long vector)
|
|||
}
|
||||
|
||||
static void __init
|
||||
init_tsunami_irqs(struct hw_interrupt_type * ops, int imin, int imax)
|
||||
init_tsunami_irqs(struct irq_chip * ops, int imin, int imax)
|
||||
{
|
||||
long i;
|
||||
for (i = imin; i <= imax; ++i) {
|
||||
|
|
|
@ -69,7 +69,7 @@ eb64p_end_irq(unsigned int irq)
|
|||
eb64p_enable_irq(irq);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type eb64p_irq_type = {
|
||||
static struct irq_chip eb64p_irq_type = {
|
||||
.typename = "EB64P",
|
||||
.startup = eb64p_startup_irq,
|
||||
.shutdown = eb64p_disable_irq,
|
||||
|
|
|
@ -80,7 +80,7 @@ eiger_end_irq(unsigned int irq)
|
|||
eiger_enable_irq(irq);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type eiger_irq_type = {
|
||||
static struct irq_chip eiger_irq_type = {
|
||||
.typename = "EIGER",
|
||||
.startup = eiger_startup_irq,
|
||||
.shutdown = eiger_disable_irq,
|
||||
|
|
|
@ -118,7 +118,7 @@ jensen_local_end(unsigned int irq)
|
|||
i8259a_end_irq(1);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type jensen_local_irq_type = {
|
||||
static struct irq_chip jensen_local_irq_type = {
|
||||
.typename = "LOCAL",
|
||||
.startup = jensen_local_startup,
|
||||
.shutdown = jensen_local_shutdown,
|
||||
|
|
|
@ -169,7 +169,7 @@ marvel_irq_noop_return(unsigned int irq)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type marvel_legacy_irq_type = {
|
||||
static struct irq_chip marvel_legacy_irq_type = {
|
||||
.typename = "LEGACY",
|
||||
.startup = marvel_irq_noop_return,
|
||||
.shutdown = marvel_irq_noop,
|
||||
|
@ -179,7 +179,7 @@ static struct hw_interrupt_type marvel_legacy_irq_type = {
|
|||
.end = marvel_irq_noop,
|
||||
};
|
||||
|
||||
static struct hw_interrupt_type io7_lsi_irq_type = {
|
||||
static struct irq_chip io7_lsi_irq_type = {
|
||||
.typename = "LSI",
|
||||
.startup = io7_startup_irq,
|
||||
.shutdown = io7_disable_irq,
|
||||
|
@ -189,7 +189,7 @@ static struct hw_interrupt_type io7_lsi_irq_type = {
|
|||
.end = io7_end_irq,
|
||||
};
|
||||
|
||||
static struct hw_interrupt_type io7_msi_irq_type = {
|
||||
static struct irq_chip io7_msi_irq_type = {
|
||||
.typename = "MSI",
|
||||
.startup = io7_startup_irq,
|
||||
.shutdown = io7_disable_irq,
|
||||
|
@ -273,8 +273,8 @@ init_one_io7_msi(struct io7 *io7, unsigned int which, unsigned int where)
|
|||
|
||||
static void __init
|
||||
init_io7_irqs(struct io7 *io7,
|
||||
struct hw_interrupt_type *lsi_ops,
|
||||
struct hw_interrupt_type *msi_ops)
|
||||
struct irq_chip *lsi_ops,
|
||||
struct irq_chip *msi_ops)
|
||||
{
|
||||
long base = (io7->pe << MARVEL_IRQ_VEC_PE_SHIFT) + 16;
|
||||
long i;
|
||||
|
|
|
@ -68,7 +68,7 @@ mikasa_end_irq(unsigned int irq)
|
|||
mikasa_enable_irq(irq);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type mikasa_irq_type = {
|
||||
static struct irq_chip mikasa_irq_type = {
|
||||
.typename = "MIKASA",
|
||||
.startup = mikasa_startup_irq,
|
||||
.shutdown = mikasa_disable_irq,
|
||||
|
|
|
@ -73,7 +73,7 @@ noritake_end_irq(unsigned int irq)
|
|||
noritake_enable_irq(irq);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type noritake_irq_type = {
|
||||
static struct irq_chip noritake_irq_type = {
|
||||
.typename = "NORITAKE",
|
||||
.startup = noritake_startup_irq,
|
||||
.shutdown = noritake_disable_irq,
|
||||
|
|
|
@ -135,7 +135,7 @@ rawhide_end_irq(unsigned int irq)
|
|||
rawhide_enable_irq(irq);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type rawhide_irq_type = {
|
||||
static struct irq_chip rawhide_irq_type = {
|
||||
.typename = "RAWHIDE",
|
||||
.startup = rawhide_startup_irq,
|
||||
.shutdown = rawhide_disable_irq,
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include <linux/sched.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/timex.h>
|
||||
#include <linux/init.h>
|
||||
|
||||
#include <asm/ptrace.h>
|
||||
|
|
|
@ -72,7 +72,7 @@ rx164_end_irq(unsigned int irq)
|
|||
rx164_enable_irq(irq);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type rx164_irq_type = {
|
||||
static struct irq_chip rx164_irq_type = {
|
||||
.typename = "RX164",
|
||||
.startup = rx164_startup_irq,
|
||||
.shutdown = rx164_disable_irq,
|
||||
|
|
|
@ -501,7 +501,7 @@ sable_lynx_mask_and_ack_irq(unsigned int irq)
|
|||
spin_unlock(&sable_lynx_irq_lock);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type sable_lynx_irq_type = {
|
||||
static struct irq_chip sable_lynx_irq_type = {
|
||||
.typename = "SABLE/LYNX",
|
||||
.startup = sable_lynx_startup_irq,
|
||||
.shutdown = sable_lynx_disable_irq,
|
||||
|
|
|
@ -74,7 +74,7 @@ takara_end_irq(unsigned int irq)
|
|||
takara_enable_irq(irq);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type takara_irq_type = {
|
||||
static struct irq_chip takara_irq_type = {
|
||||
.typename = "TAKARA",
|
||||
.startup = takara_startup_irq,
|
||||
.shutdown = takara_disable_irq,
|
||||
|
|
|
@ -185,7 +185,7 @@ titan_srm_device_interrupt(unsigned long vector)
|
|||
|
||||
|
||||
static void __init
|
||||
init_titan_irqs(struct hw_interrupt_type * ops, int imin, int imax)
|
||||
init_titan_irqs(struct irq_chip * ops, int imin, int imax)
|
||||
{
|
||||
long i;
|
||||
for (i = imin; i <= imax; ++i) {
|
||||
|
@ -194,7 +194,7 @@ init_titan_irqs(struct hw_interrupt_type * ops, int imin, int imax)
|
|||
}
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type titan_irq_type = {
|
||||
static struct irq_chip titan_irq_type = {
|
||||
.typename = "TITAN",
|
||||
.startup = titan_startup_irq,
|
||||
.shutdown = titan_disable_irq,
|
||||
|
|
|
@ -157,7 +157,7 @@ wildfire_end_irq(unsigned int irq)
|
|||
wildfire_enable_irq(irq);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type wildfire_irq_type = {
|
||||
static struct irq_chip wildfire_irq_type = {
|
||||
.typename = "WILDFIRE",
|
||||
.startup = wildfire_startup_irq,
|
||||
.shutdown = wildfire_disable_irq,
|
||||
|
|
|
@ -28,9 +28,9 @@ EXPORT_SYMBOL(node_data);
|
|||
#define DBGDCONT(args...)
|
||||
#endif
|
||||
|
||||
#define for_each_mem_cluster(memdesc, cluster, i) \
|
||||
for ((cluster) = (memdesc)->cluster, (i) = 0; \
|
||||
(i) < (memdesc)->numclusters; (i)++, (cluster)++)
|
||||
#define for_each_mem_cluster(memdesc, _cluster, i) \
|
||||
for ((_cluster) = (memdesc)->cluster, (i) = 0; \
|
||||
(i) < (memdesc)->numclusters; (i)++, (_cluster)++)
|
||||
|
||||
static void __init show_mem_layout(void)
|
||||
{
|
||||
|
|
|
@ -14,10 +14,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial thread structure.
|
||||
*
|
||||
|
|
|
@ -15,10 +15,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial thread structure. Must be aligned on an 8192-byte boundary.
|
||||
*/
|
||||
|
|
|
@ -1,21 +1,6 @@
|
|||
#ifndef _ASM_KMAP_TYPES_H
|
||||
#define _ASM_KMAP_TYPES_H
|
||||
|
||||
enum km_type {
|
||||
KM_BOUNCE_READ,
|
||||
KM_SKB_SUNRPC_DATA,
|
||||
KM_SKB_DATA_SOFTIRQ,
|
||||
KM_USER0,
|
||||
KM_USER1,
|
||||
KM_BIO_SRC_IRQ,
|
||||
KM_BIO_DST_IRQ,
|
||||
KM_PTE0,
|
||||
KM_PTE1,
|
||||
KM_IRQ0,
|
||||
KM_IRQ1,
|
||||
KM_SOFTIRQ0,
|
||||
KM_SOFTIRQ1,
|
||||
KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#endif
|
||||
|
|
|
@ -35,10 +35,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial task structure.
|
||||
*
|
||||
|
|
|
@ -5,21 +5,6 @@
|
|||
* is actually used on cris.
|
||||
*/
|
||||
|
||||
enum km_type {
|
||||
KM_BOUNCE_READ,
|
||||
KM_SKB_SUNRPC_DATA,
|
||||
KM_SKB_DATA_SOFTIRQ,
|
||||
KM_USER0,
|
||||
KM_USER1,
|
||||
KM_BIO_SRC_IRQ,
|
||||
KM_BIO_DST_IRQ,
|
||||
KM_PTE0,
|
||||
KM_PTE1,
|
||||
KM_IRQ0,
|
||||
KM_IRQ1,
|
||||
KM_SOFTIRQ0,
|
||||
KM_SOFTIRQ1,
|
||||
KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#endif
|
||||
|
|
|
@ -38,10 +38,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial thread structure.
|
||||
*
|
||||
|
|
|
@ -12,10 +12,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial thread structure.
|
||||
*
|
||||
|
|
|
@ -1,21 +1,6 @@
|
|||
#ifndef _ASM_H8300_KMAP_TYPES_H
|
||||
#define _ASM_H8300_KMAP_TYPES_H
|
||||
|
||||
enum km_type {
|
||||
KM_BOUNCE_READ,
|
||||
KM_SKB_SUNRPC_DATA,
|
||||
KM_SKB_DATA_SOFTIRQ,
|
||||
KM_USER0,
|
||||
KM_USER1,
|
||||
KM_BIO_SRC_IRQ,
|
||||
KM_BIO_DST_IRQ,
|
||||
KM_PTE0,
|
||||
KM_PTE1,
|
||||
KM_IRQ0,
|
||||
KM_IRQ1,
|
||||
KM_SOFTIRQ0,
|
||||
KM_SOFTIRQ1,
|
||||
KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#endif
|
||||
|
|
|
@ -14,10 +14,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial task structure.
|
||||
*
|
||||
|
|
|
@ -1131,7 +1131,7 @@ sba_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, gfp
|
|||
#ifdef CONFIG_NUMA
|
||||
{
|
||||
struct page *page;
|
||||
page = alloc_pages_node(ioc->node == MAX_NUMNODES ?
|
||||
page = alloc_pages_exact_node(ioc->node == MAX_NUMNODES ?
|
||||
numa_node_id() : ioc->node, flags,
|
||||
get_order(size));
|
||||
|
||||
|
|
|
@ -1,30 +1,12 @@
|
|||
#ifndef _ASM_IA64_KMAP_TYPES_H
|
||||
#define _ASM_IA64_KMAP_TYPES_H
|
||||
|
||||
|
||||
#ifdef CONFIG_DEBUG_HIGHMEM
|
||||
# define D(n) __KM_FENCE_##n ,
|
||||
#else
|
||||
# define D(n)
|
||||
#define __WITH_KM_FENCE
|
||||
#endif
|
||||
|
||||
enum km_type {
|
||||
D(0) KM_BOUNCE_READ,
|
||||
D(1) KM_SKB_SUNRPC_DATA,
|
||||
D(2) KM_SKB_DATA_SOFTIRQ,
|
||||
D(3) KM_USER0,
|
||||
D(4) KM_USER1,
|
||||
D(5) KM_BIO_SRC_IRQ,
|
||||
D(6) KM_BIO_DST_IRQ,
|
||||
D(7) KM_PTE0,
|
||||
D(8) KM_PTE1,
|
||||
D(9) KM_IRQ0,
|
||||
D(10) KM_IRQ1,
|
||||
D(11) KM_SOFTIRQ0,
|
||||
D(12) KM_SOFTIRQ1,
|
||||
D(13) KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#undef D
|
||||
#undef __WITH_KM_FENCE
|
||||
|
||||
#endif /* _ASM_IA64_KMAP_TYPES_H */
|
||||
|
|
|
@ -19,10 +19,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial task structure.
|
||||
*
|
||||
|
|
|
@ -1829,8 +1829,7 @@ ia64_mca_cpu_init(void *cpu_data)
|
|||
data = mca_bootmem();
|
||||
first_time = 0;
|
||||
} else
|
||||
data = page_address(alloc_pages_node(numa_node_id(),
|
||||
GFP_KERNEL, get_order(sz)));
|
||||
data = __get_free_pages(GFP_KERNEL, get_order(sz));
|
||||
if (!data)
|
||||
panic("Could not allocate MCA memory for cpu %d\n",
|
||||
cpu);
|
||||
|
|
|
@ -5595,7 +5595,7 @@ pfm_interrupt_handler(int irq, void *arg)
|
|||
(*pfm_alt_intr_handler->handler)(irq, arg, regs);
|
||||
}
|
||||
|
||||
put_cpu_no_resched();
|
||||
put_cpu();
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
|
|
@ -98,7 +98,8 @@ static int uncached_add_chunk(struct uncached_pool *uc_pool, int nid)
|
|||
|
||||
/* attempt to allocate a granule's worth of cached memory pages */
|
||||
|
||||
page = alloc_pages_node(nid, GFP_KERNEL | __GFP_ZERO | GFP_THISNODE,
|
||||
page = alloc_pages_exact_node(nid,
|
||||
GFP_KERNEL | __GFP_ZERO | GFP_THISNODE,
|
||||
IA64_GRANULE_SHIFT-PAGE_SHIFT);
|
||||
if (!page) {
|
||||
mutex_unlock(&uc_pool->add_chunk_mutex);
|
||||
|
|
|
@ -90,7 +90,8 @@ static void *sn_dma_alloc_coherent(struct device *dev, size_t size,
|
|||
*/
|
||||
node = pcibus_to_node(pdev->bus);
|
||||
if (likely(node >=0)) {
|
||||
struct page *p = alloc_pages_node(node, flags, get_order(size));
|
||||
struct page *p = alloc_pages_exact_node(node,
|
||||
flags, get_order(size));
|
||||
|
||||
if (likely(p))
|
||||
cpuaddr = page_address(p);
|
||||
|
|
|
@ -2,28 +2,11 @@
|
|||
#define __M32R_KMAP_TYPES_H
|
||||
|
||||
#ifdef CONFIG_DEBUG_HIGHMEM
|
||||
# define D(n) __KM_FENCE_##n ,
|
||||
#else
|
||||
# define D(n)
|
||||
#define __WITH_KM_FENCE
|
||||
#endif
|
||||
|
||||
enum km_type {
|
||||
D(0) KM_BOUNCE_READ,
|
||||
D(1) KM_SKB_SUNRPC_DATA,
|
||||
D(2) KM_SKB_DATA_SOFTIRQ,
|
||||
D(3) KM_USER0,
|
||||
D(4) KM_USER1,
|
||||
D(5) KM_BIO_SRC_IRQ,
|
||||
D(6) KM_BIO_DST_IRQ,
|
||||
D(7) KM_PTE0,
|
||||
D(8) KM_PTE1,
|
||||
D(9) KM_IRQ0,
|
||||
D(10) KM_IRQ1,
|
||||
D(11) KM_SOFTIRQ0,
|
||||
D(12) KM_SOFTIRQ1,
|
||||
D(13) KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#undef D
|
||||
#undef __WITH_KM_FENCE
|
||||
|
||||
#endif /* __M32R_KMAP_TYPES_H */
|
||||
|
|
|
@ -13,10 +13,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial thread structure.
|
||||
*
|
||||
|
|
|
@ -154,9 +154,9 @@ unsigned long __init zone_sizes_init(void)
|
|||
* Use all area of internal RAM.
|
||||
* see __alloc_pages()
|
||||
*/
|
||||
NODE_DATA(1)->node_zones->pages_min = 0;
|
||||
NODE_DATA(1)->node_zones->pages_low = 0;
|
||||
NODE_DATA(1)->node_zones->pages_high = 0;
|
||||
NODE_DATA(1)->node_zones->watermark[WMARK_MIN] = 0;
|
||||
NODE_DATA(1)->node_zones->watermark[WMARK_LOW] = 0;
|
||||
NODE_DATA(1)->node_zones->watermark[WMARK_HIGH] = 0;
|
||||
|
||||
return holes;
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ static void shutdown_m32104ut_irq(unsigned int irq)
|
|||
outl(M32R_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type m32104ut_irq_type =
|
||||
static struct irq_chip m32104ut_irq_type =
|
||||
{
|
||||
.typename = "M32104UT-IRQ",
|
||||
.startup = startup_m32104ut_irq,
|
||||
|
|
|
@ -69,7 +69,7 @@ static void shutdown_m32700ut_irq(unsigned int irq)
|
|||
outl(M32R_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type m32700ut_irq_type =
|
||||
static struct irq_chip m32700ut_irq_type =
|
||||
{
|
||||
.typename = "M32700UT-IRQ",
|
||||
.startup = startup_m32700ut_irq,
|
||||
|
@ -146,7 +146,7 @@ static void shutdown_m32700ut_pld_irq(unsigned int irq)
|
|||
outw(PLD_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type m32700ut_pld_irq_type =
|
||||
static struct irq_chip m32700ut_pld_irq_type =
|
||||
{
|
||||
.typename = "M32700UT-PLD-IRQ",
|
||||
.startup = startup_m32700ut_pld_irq,
|
||||
|
@ -215,7 +215,7 @@ static void shutdown_m32700ut_lanpld_irq(unsigned int irq)
|
|||
outw(PLD_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type m32700ut_lanpld_irq_type =
|
||||
static struct irq_chip m32700ut_lanpld_irq_type =
|
||||
{
|
||||
.typename = "M32700UT-PLD-LAN-IRQ",
|
||||
.startup = startup_m32700ut_lanpld_irq,
|
||||
|
@ -284,7 +284,7 @@ static void shutdown_m32700ut_lcdpld_irq(unsigned int irq)
|
|||
outw(PLD_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type m32700ut_lcdpld_irq_type =
|
||||
static struct irq_chip m32700ut_lcdpld_irq_type =
|
||||
{
|
||||
.typename = "M32700UT-PLD-LCD-IRQ",
|
||||
.startup = startup_m32700ut_lcdpld_irq,
|
||||
|
|
|
@ -63,7 +63,7 @@ static void shutdown_mappi_irq(unsigned int irq)
|
|||
outl(M32R_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type mappi_irq_type =
|
||||
static struct irq_chip mappi_irq_type =
|
||||
{
|
||||
.typename = "MAPPI-IRQ",
|
||||
.startup = startup_mappi_irq,
|
||||
|
|
|
@ -70,7 +70,7 @@ static void shutdown_mappi2_irq(unsigned int irq)
|
|||
outl(M32R_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type mappi2_irq_type =
|
||||
static struct irq_chip mappi2_irq_type =
|
||||
{
|
||||
.typename = "MAPPI2-IRQ",
|
||||
.startup = startup_mappi2_irq,
|
||||
|
|
|
@ -70,7 +70,7 @@ static void shutdown_mappi3_irq(unsigned int irq)
|
|||
outl(M32R_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type mappi3_irq_type =
|
||||
static struct irq_chip mappi3_irq_type =
|
||||
{
|
||||
.typename = "MAPPI3-IRQ",
|
||||
.startup = startup_mappi3_irq,
|
||||
|
|
|
@ -61,7 +61,7 @@ static void shutdown_oaks32r_irq(unsigned int irq)
|
|||
outl(M32R_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type oaks32r_irq_type =
|
||||
static struct irq_chip oaks32r_irq_type =
|
||||
{
|
||||
.typename = "OAKS32R-IRQ",
|
||||
.startup = startup_oaks32r_irq,
|
||||
|
|
|
@ -70,7 +70,7 @@ static void shutdown_opsput_irq(unsigned int irq)
|
|||
outl(M32R_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type opsput_irq_type =
|
||||
static struct irq_chip opsput_irq_type =
|
||||
{
|
||||
.typename = "OPSPUT-IRQ",
|
||||
.startup = startup_opsput_irq,
|
||||
|
@ -147,7 +147,7 @@ static void shutdown_opsput_pld_irq(unsigned int irq)
|
|||
outw(PLD_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type opsput_pld_irq_type =
|
||||
static struct irq_chip opsput_pld_irq_type =
|
||||
{
|
||||
.typename = "OPSPUT-PLD-IRQ",
|
||||
.startup = startup_opsput_pld_irq,
|
||||
|
@ -216,7 +216,7 @@ static void shutdown_opsput_lanpld_irq(unsigned int irq)
|
|||
outw(PLD_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type opsput_lanpld_irq_type =
|
||||
static struct irq_chip opsput_lanpld_irq_type =
|
||||
{
|
||||
.typename = "OPSPUT-PLD-LAN-IRQ",
|
||||
.startup = startup_opsput_lanpld_irq,
|
||||
|
@ -285,7 +285,7 @@ static void shutdown_opsput_lcdpld_irq(unsigned int irq)
|
|||
outw(PLD_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type opsput_lcdpld_irq_type =
|
||||
static struct irq_chip opsput_lcdpld_irq_type =
|
||||
{
|
||||
"OPSPUT-PLD-LCD-IRQ",
|
||||
startup_opsput_lcdpld_irq,
|
||||
|
|
|
@ -61,7 +61,7 @@ static void shutdown_mappi_irq(unsigned int irq)
|
|||
outl(M32R_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type mappi_irq_type =
|
||||
static struct irq_chip mappi_irq_type =
|
||||
{
|
||||
.typename = "M32700-IRQ",
|
||||
.startup = startup_mappi_irq,
|
||||
|
@ -134,7 +134,7 @@ static void shutdown_m32700ut_pld_irq(unsigned int irq)
|
|||
outw(PLD_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type m32700ut_pld_irq_type =
|
||||
static struct irq_chip m32700ut_pld_irq_type =
|
||||
{
|
||||
.typename = "USRV-PLD-IRQ",
|
||||
.startup = startup_m32700ut_pld_irq,
|
||||
|
|
|
@ -1,21 +1,6 @@
|
|||
#ifndef __ASM_M68K_KMAP_TYPES_H
|
||||
#define __ASM_M68K_KMAP_TYPES_H
|
||||
|
||||
enum km_type {
|
||||
KM_BOUNCE_READ,
|
||||
KM_SKB_SUNRPC_DATA,
|
||||
KM_SKB_DATA_SOFTIRQ,
|
||||
KM_USER0,
|
||||
KM_USER1,
|
||||
KM_BIO_SRC_IRQ,
|
||||
KM_BIO_DST_IRQ,
|
||||
KM_PTE0,
|
||||
KM_PTE1,
|
||||
KM_IRQ0,
|
||||
KM_IRQ1,
|
||||
KM_SOFTIRQ0,
|
||||
KM_SOFTIRQ1,
|
||||
KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#endif /* __ASM_M68K_KMAP_TYPES_H */
|
||||
|
|
|
@ -42,10 +42,6 @@
|
|||
*/
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
union thread_union init_thread_union
|
||||
__attribute__((section(".data.init_task"), aligned(THREAD_SIZE)))
|
||||
= { INIT_THREAD_INFO(init_task) };
|
||||
|
|
|
@ -14,10 +14,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial task structure.
|
||||
*
|
||||
|
|
|
@ -1,29 +1,6 @@
|
|||
/*
|
||||
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#ifndef _ASM_MICROBLAZE_KMAP_TYPES_H
|
||||
#define _ASM_MICROBLAZE_KMAP_TYPES_H
|
||||
|
||||
enum km_type {
|
||||
KM_BOUNCE_READ,
|
||||
KM_SKB_SUNRPC_DATA,
|
||||
KM_SKB_DATA_SOFTIRQ,
|
||||
KM_USER0,
|
||||
KM_USER1,
|
||||
KM_BIO_SRC_IRQ,
|
||||
KM_BIO_DST_IRQ,
|
||||
KM_PTE0,
|
||||
KM_PTE1,
|
||||
KM_IRQ0,
|
||||
KM_IRQ1,
|
||||
KM_SOFTIRQ0,
|
||||
KM_SOFTIRQ1,
|
||||
KM_TYPE_NR,
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#endif /* _ASM_MICROBLAZE_KMAP_TYPES_H */
|
||||
|
|
|
@ -12,8 +12,6 @@
|
|||
#define PIT_CH0 0x40
|
||||
#define PIT_CH2 0x42
|
||||
|
||||
#define PIT_TICK_RATE 1193182UL
|
||||
|
||||
extern spinlock_t i8253_lock;
|
||||
|
||||
extern void setup_pit_timer(void);
|
||||
|
|
|
@ -1,30 +1,12 @@
|
|||
#ifndef _ASM_KMAP_TYPES_H
|
||||
#define _ASM_KMAP_TYPES_H
|
||||
|
||||
|
||||
#ifdef CONFIG_DEBUG_HIGHMEM
|
||||
# define D(n) __KM_FENCE_##n ,
|
||||
#else
|
||||
# define D(n)
|
||||
#define __WITH_KM_FENCE
|
||||
#endif
|
||||
|
||||
enum km_type {
|
||||
D(0) KM_BOUNCE_READ,
|
||||
D(1) KM_SKB_SUNRPC_DATA,
|
||||
D(2) KM_SKB_DATA_SOFTIRQ,
|
||||
D(3) KM_USER0,
|
||||
D(4) KM_USER1,
|
||||
D(5) KM_BIO_SRC_IRQ,
|
||||
D(6) KM_BIO_DST_IRQ,
|
||||
D(7) KM_PTE0,
|
||||
D(8) KM_PTE1,
|
||||
D(9) KM_IRQ0,
|
||||
D(10) KM_IRQ1,
|
||||
D(11) KM_SOFTIRQ0,
|
||||
D(12) KM_SOFTIRQ1,
|
||||
D(13) KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#undef D
|
||||
#undef __WITH_KM_FENCE
|
||||
|
||||
#endif
|
||||
|
|
|
@ -11,10 +11,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial thread structure.
|
||||
*
|
||||
|
|
|
@ -1,31 +1,6 @@
|
|||
/* MN10300 kmap_atomic() slot IDs
|
||||
*
|
||||
* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
|
||||
* Written by David Howells (dhowells@redhat.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public Licence
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the Licence, or (at your option) any later version.
|
||||
*/
|
||||
#ifndef _ASM_KMAP_TYPES_H
|
||||
#define _ASM_KMAP_TYPES_H
|
||||
|
||||
enum km_type {
|
||||
KM_BOUNCE_READ,
|
||||
KM_SKB_SUNRPC_DATA,
|
||||
KM_SKB_DATA_SOFTIRQ,
|
||||
KM_USER0,
|
||||
KM_USER1,
|
||||
KM_BIO_SRC_IRQ,
|
||||
KM_BIO_DST_IRQ,
|
||||
KM_PTE0,
|
||||
KM_PTE1,
|
||||
KM_IRQ0,
|
||||
KM_IRQ1,
|
||||
KM_SOFTIRQ0,
|
||||
KM_SOFTIRQ1,
|
||||
KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#endif /* _ASM_KMAP_TYPES_H */
|
||||
|
|
|
@ -20,9 +20,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial thread structure.
|
||||
*
|
||||
|
|
|
@ -1,30 +1,12 @@
|
|||
#ifndef _ASM_KMAP_TYPES_H
|
||||
#define _ASM_KMAP_TYPES_H
|
||||
|
||||
|
||||
#ifdef CONFIG_DEBUG_HIGHMEM
|
||||
# define D(n) __KM_FENCE_##n ,
|
||||
#else
|
||||
# define D(n)
|
||||
#define __WITH_KM_FENCE
|
||||
#endif
|
||||
|
||||
enum km_type {
|
||||
D(0) KM_BOUNCE_READ,
|
||||
D(1) KM_SKB_SUNRPC_DATA,
|
||||
D(2) KM_SKB_DATA_SOFTIRQ,
|
||||
D(3) KM_USER0,
|
||||
D(4) KM_USER1,
|
||||
D(5) KM_BIO_SRC_IRQ,
|
||||
D(6) KM_BIO_DST_IRQ,
|
||||
D(7) KM_PTE0,
|
||||
D(8) KM_PTE1,
|
||||
D(9) KM_IRQ0,
|
||||
D(10) KM_IRQ1,
|
||||
D(11) KM_SOFTIRQ0,
|
||||
D(12) KM_SOFTIRQ1,
|
||||
D(13) KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#undef D
|
||||
#undef __WITH_KM_FENCE
|
||||
|
||||
#endif
|
||||
|
|
|
@ -36,10 +36,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial task structure.
|
||||
*
|
||||
|
|
|
@ -1,10 +1,3 @@
|
|||
#ifndef _ASM_POWERPC_8253PIT_H
|
||||
#define _ASM_POWERPC_8253PIT_H
|
||||
|
||||
/*
|
||||
* 8253/8254 Programmable Interval Timer
|
||||
*/
|
||||
|
||||
#define PIT_TICK_RATE 1193182UL
|
||||
|
||||
#endif /* _ASM_POWERPC_8253PIT_H */
|
||||
|
|
|
@ -9,10 +9,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial thread structure.
|
||||
*
|
||||
|
|
|
@ -44,10 +44,7 @@
|
|||
#include <asm/sections.h>
|
||||
#include <asm/machdep.h>
|
||||
|
||||
#ifdef CONFIG_LOGO_LINUX_CLUT224
|
||||
#include <linux/linux_logo.h>
|
||||
extern const struct linux_logo logo_linux_clut224;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Properties whose value is longer than this get excluded from our
|
||||
|
|
|
@ -122,8 +122,8 @@ static int __init cbe_ptcal_enable_on_node(int nid, int order)
|
|||
|
||||
area->nid = nid;
|
||||
area->order = order;
|
||||
area->pages = alloc_pages_node(area->nid, GFP_KERNEL | GFP_THISNODE,
|
||||
area->order);
|
||||
area->pages = alloc_pages_exact_node(area->nid, GFP_KERNEL|GFP_THISNODE,
|
||||
area->order);
|
||||
|
||||
if (!area->pages) {
|
||||
printk(KERN_WARNING "%s: no page on node %d\n",
|
||||
|
|
|
@ -752,17 +752,8 @@ static int __init init_spu_base(void)
|
|||
goto out_unregister_sysdev_class;
|
||||
}
|
||||
|
||||
if (ret > 0) {
|
||||
/*
|
||||
* We cannot put the forward declaration in
|
||||
* <linux/linux_logo.h> because of conflicting session type
|
||||
* conflicts for const and __initdata with different compiler
|
||||
* versions
|
||||
*/
|
||||
extern const struct linux_logo logo_spe_clut224;
|
||||
|
||||
if (ret > 0)
|
||||
fb_append_extra_logo(&logo_spe_clut224, ret);
|
||||
}
|
||||
|
||||
mutex_lock(&spu_full_list_mutex);
|
||||
xmon_register_spus(&spu_full_list);
|
||||
|
|
|
@ -2,22 +2,7 @@
|
|||
#ifndef _ASM_KMAP_TYPES_H
|
||||
#define _ASM_KMAP_TYPES_H
|
||||
|
||||
enum km_type {
|
||||
KM_BOUNCE_READ,
|
||||
KM_SKB_SUNRPC_DATA,
|
||||
KM_SKB_DATA_SOFTIRQ,
|
||||
KM_USER0,
|
||||
KM_USER1,
|
||||
KM_BIO_SRC_IRQ,
|
||||
KM_BIO_DST_IRQ,
|
||||
KM_PTE0,
|
||||
KM_PTE1,
|
||||
KM_IRQ0,
|
||||
KM_IRQ1,
|
||||
KM_SOFTIRQ0,
|
||||
KM_SOFTIRQ1,
|
||||
KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#endif
|
||||
#endif /* __KERNEL__ */
|
||||
|
|
|
@ -18,10 +18,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial thread structure.
|
||||
*
|
||||
|
|
|
@ -3,30 +3,12 @@
|
|||
|
||||
/* Dummy header just to define km_type. */
|
||||
|
||||
|
||||
#ifdef CONFIG_DEBUG_HIGHMEM
|
||||
# define D(n) __KM_FENCE_##n ,
|
||||
#else
|
||||
# define D(n)
|
||||
#define __WITH_KM_FENCE
|
||||
#endif
|
||||
|
||||
enum km_type {
|
||||
D(0) KM_BOUNCE_READ,
|
||||
D(1) KM_SKB_SUNRPC_DATA,
|
||||
D(2) KM_SKB_DATA_SOFTIRQ,
|
||||
D(3) KM_USER0,
|
||||
D(4) KM_USER1,
|
||||
D(5) KM_BIO_SRC_IRQ,
|
||||
D(6) KM_BIO_DST_IRQ,
|
||||
D(7) KM_PTE0,
|
||||
D(8) KM_PTE1,
|
||||
D(9) KM_IRQ0,
|
||||
D(10) KM_IRQ1,
|
||||
D(11) KM_SOFTIRQ0,
|
||||
D(12) KM_SOFTIRQ1,
|
||||
D(13) KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#undef D
|
||||
#undef __WITH_KM_FENCE
|
||||
|
||||
#endif
|
||||
|
|
|
@ -10,9 +10,6 @@
|
|||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct pt_regs fake_swapper_regs;
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial thread structure.
|
||||
*
|
||||
|
|
|
@ -5,21 +5,6 @@
|
|||
* is actually used on sparc. -DaveM
|
||||
*/
|
||||
|
||||
enum km_type {
|
||||
KM_BOUNCE_READ,
|
||||
KM_SKB_SUNRPC_DATA,
|
||||
KM_SKB_DATA_SOFTIRQ,
|
||||
KM_USER0,
|
||||
KM_USER1,
|
||||
KM_BIO_SRC_IRQ,
|
||||
KM_BIO_DST_IRQ,
|
||||
KM_PTE0,
|
||||
KM_PTE1,
|
||||
KM_IRQ0,
|
||||
KM_IRQ1,
|
||||
KM_SOFTIRQ0,
|
||||
KM_SOFTIRQ1,
|
||||
KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#endif
|
||||
|
|
|
@ -10,10 +10,7 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
struct task_struct init_task = INIT_TASK(init_task);
|
||||
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
EXPORT_SYMBOL(init_task);
|
||||
|
||||
/* .text section in head.S is aligned at 8k boundary and this gets linked
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
* sign followed by value, e.g.:
|
||||
*
|
||||
* static int init_variable __initdata = 0;
|
||||
* static char linux_logo[] __initdata = { 0x32, 0x36, ... };
|
||||
* static const char linux_logo[] __initconst = { 0x32, 0x36, ... };
|
||||
*
|
||||
* Don't forget to initialize data not at file scope, i.e. within a function,
|
||||
* as gcc otherwise puts the data into the bss section and not into the init
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
#define ETH_ADDR_LEN (6)
|
||||
#define ETH_HEADER_ETHERTAP (16)
|
||||
#define ETH_HEADER_OTHER (14)
|
||||
#define ETH_HEADER_OTHER (26) /* 14 for ethernet + VLAN + MPLS for crazy people */
|
||||
#define ETH_MAX_PACKET (1500)
|
||||
|
||||
#define UML_NET_VERSION (4)
|
||||
|
|
|
@ -10,11 +10,8 @@
|
|||
#include "linux/mqueue.h"
|
||||
#include "asm/uaccess.h"
|
||||
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
EXPORT_SYMBOL(init_mm);
|
||||
|
||||
/*
|
||||
* Initial task structure.
|
||||
*
|
||||
|
|
|
@ -358,7 +358,7 @@ EXPORT_SYMBOL(um_request_irq);
|
|||
EXPORT_SYMBOL(reactivate_fd);
|
||||
|
||||
/*
|
||||
* hw_interrupt_type must define (startup || enable) &&
|
||||
* irq_chip must define (startup || enable) &&
|
||||
* (shutdown || disable) && end
|
||||
*/
|
||||
static void dummy(unsigned int irq)
|
||||
|
@ -366,7 +366,7 @@ static void dummy(unsigned int irq)
|
|||
}
|
||||
|
||||
/* This is used for everything else than the timer. */
|
||||
static struct hw_interrupt_type normal_irq_type = {
|
||||
static struct irq_chip normal_irq_type = {
|
||||
.typename = "SIGIO",
|
||||
.release = free_irq_by_irq_and_dev,
|
||||
.disable = dummy,
|
||||
|
@ -375,7 +375,7 @@ static struct hw_interrupt_type normal_irq_type = {
|
|||
.end = dummy
|
||||
};
|
||||
|
||||
static struct hw_interrupt_type SIGVTALRM_irq_type = {
|
||||
static struct irq_chip SIGVTALRM_irq_type = {
|
||||
.typename = "SIGVTALRM",
|
||||
.release = free_irq_by_irq_and_dev,
|
||||
.shutdown = dummy, /* never called */
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#include "as-layout.h"
|
||||
|
||||
.globl syscall_stub
|
||||
.section .__syscall_stub, "x"
|
||||
.section .__syscall_stub, "ax"
|
||||
|
||||
.globl batch_syscall_stub
|
||||
batch_syscall_stub:
|
||||
|
|
|
@ -66,28 +66,28 @@ typedef struct user_i387_struct elf_fpregset_t;
|
|||
PT_REGS_R15(regs) = 0; \
|
||||
} while (0)
|
||||
|
||||
#define ELF_CORE_COPY_REGS(pr_reg, regs) \
|
||||
(pr_reg)[0] = (regs)->regs.gp[0]; \
|
||||
(pr_reg)[1] = (regs)->regs.gp[1]; \
|
||||
(pr_reg)[2] = (regs)->regs.gp[2]; \
|
||||
(pr_reg)[3] = (regs)->regs.gp[3]; \
|
||||
(pr_reg)[4] = (regs)->regs.gp[4]; \
|
||||
(pr_reg)[5] = (regs)->regs.gp[5]; \
|
||||
(pr_reg)[6] = (regs)->regs.gp[6]; \
|
||||
(pr_reg)[7] = (regs)->regs.gp[7]; \
|
||||
(pr_reg)[8] = (regs)->regs.gp[8]; \
|
||||
(pr_reg)[9] = (regs)->regs.gp[9]; \
|
||||
(pr_reg)[10] = (regs)->regs.gp[10]; \
|
||||
(pr_reg)[11] = (regs)->regs.gp[11]; \
|
||||
(pr_reg)[12] = (regs)->regs.gp[12]; \
|
||||
(pr_reg)[13] = (regs)->regs.gp[13]; \
|
||||
(pr_reg)[14] = (regs)->regs.gp[14]; \
|
||||
(pr_reg)[15] = (regs)->regs.gp[15]; \
|
||||
(pr_reg)[16] = (regs)->regs.gp[16]; \
|
||||
(pr_reg)[17] = (regs)->regs.gp[17]; \
|
||||
(pr_reg)[18] = (regs)->regs.gp[18]; \
|
||||
(pr_reg)[19] = (regs)->regs.gp[19]; \
|
||||
(pr_reg)[20] = (regs)->regs.gp[20]; \
|
||||
#define ELF_CORE_COPY_REGS(pr_reg, _regs) \
|
||||
(pr_reg)[0] = (_regs)->regs.gp[0]; \
|
||||
(pr_reg)[1] = (_regs)->regs.gp[1]; \
|
||||
(pr_reg)[2] = (_regs)->regs.gp[2]; \
|
||||
(pr_reg)[3] = (_regs)->regs.gp[3]; \
|
||||
(pr_reg)[4] = (_regs)->regs.gp[4]; \
|
||||
(pr_reg)[5] = (_regs)->regs.gp[5]; \
|
||||
(pr_reg)[6] = (_regs)->regs.gp[6]; \
|
||||
(pr_reg)[7] = (_regs)->regs.gp[7]; \
|
||||
(pr_reg)[8] = (_regs)->regs.gp[8]; \
|
||||
(pr_reg)[9] = (_regs)->regs.gp[9]; \
|
||||
(pr_reg)[10] = (_regs)->regs.gp[10]; \
|
||||
(pr_reg)[11] = (_regs)->regs.gp[11]; \
|
||||
(pr_reg)[12] = (_regs)->regs.gp[12]; \
|
||||
(pr_reg)[13] = (_regs)->regs.gp[13]; \
|
||||
(pr_reg)[14] = (_regs)->regs.gp[14]; \
|
||||
(pr_reg)[15] = (_regs)->regs.gp[15]; \
|
||||
(pr_reg)[16] = (_regs)->regs.gp[16]; \
|
||||
(pr_reg)[17] = (_regs)->regs.gp[17]; \
|
||||
(pr_reg)[18] = (_regs)->regs.gp[18]; \
|
||||
(pr_reg)[19] = (_regs)->regs.gp[19]; \
|
||||
(pr_reg)[20] = (_regs)->regs.gp[20]; \
|
||||
(pr_reg)[21] = current->thread.arch.fs; \
|
||||
(pr_reg)[22] = 0; \
|
||||
(pr_reg)[23] = 0; \
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#include "as-layout.h"
|
||||
|
||||
.globl syscall_stub
|
||||
.section .__syscall_stub, "x"
|
||||
.section .__syscall_stub, "ax"
|
||||
syscall_stub:
|
||||
syscall
|
||||
/* We don't have 64-bit constants, so this constructs the address
|
||||
|
|
|
@ -2,28 +2,11 @@
|
|||
#define _ASM_X86_KMAP_TYPES_H
|
||||
|
||||
#if defined(CONFIG_X86_32) && defined(CONFIG_DEBUG_HIGHMEM)
|
||||
# define D(n) __KM_FENCE_##n ,
|
||||
#else
|
||||
# define D(n)
|
||||
#define __WITH_KM_FENCE
|
||||
#endif
|
||||
|
||||
enum km_type {
|
||||
D(0) KM_BOUNCE_READ,
|
||||
D(1) KM_SKB_SUNRPC_DATA,
|
||||
D(2) KM_SKB_DATA_SOFTIRQ,
|
||||
D(3) KM_USER0,
|
||||
D(4) KM_USER1,
|
||||
D(5) KM_BIO_SRC_IRQ,
|
||||
D(6) KM_BIO_DST_IRQ,
|
||||
D(7) KM_PTE0,
|
||||
D(8) KM_PTE1,
|
||||
D(9) KM_IRQ0,
|
||||
D(10) KM_IRQ1,
|
||||
D(11) KM_SOFTIRQ0,
|
||||
D(12) KM_SOFTIRQ1,
|
||||
D(13) KM_TYPE_NR
|
||||
};
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#undef D
|
||||
#undef __WITH_KM_FENCE
|
||||
|
||||
#endif /* _ASM_X86_KMAP_TYPES_H */
|
||||
|
|
|
@ -4,9 +4,7 @@
|
|||
#include <asm/processor.h>
|
||||
#include <asm/tsc.h>
|
||||
|
||||
/* The PIT ticks at this frequency (in HZ): */
|
||||
#define PIT_TICK_RATE 1193182
|
||||
|
||||
/* Assume we use the PIT time source for the clock tick */
|
||||
#define CLOCK_TICK_RATE PIT_TICK_RATE
|
||||
|
||||
#define ARCH_HAS_READ_CURRENT_TIMER
|
||||
|
|
|
@ -487,7 +487,6 @@ out:
|
|||
static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c)
|
||||
{
|
||||
char *v = c->x86_vendor_id;
|
||||
static int printed;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < X86_VENDOR_NUM; i++) {
|
||||
|
@ -504,13 +503,9 @@ static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c)
|
|||
}
|
||||
}
|
||||
|
||||
if (!printed) {
|
||||
printed++;
|
||||
printk(KERN_ERR
|
||||
"CPU: vendor_id '%s' unknown, using generic init.\n", v);
|
||||
|
||||
printk(KERN_ERR "CPU: Your system may be unstable.\n");
|
||||
}
|
||||
printk_once(KERN_ERR
|
||||
"CPU: vendor_id '%s' unknown, using generic init.\n" \
|
||||
"CPU: Your system may be unstable.\n", v);
|
||||
|
||||
c->x86_vendor = X86_VENDOR_UNKNOWN;
|
||||
this_cpu = &default_cpu;
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <linux/spinlock.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/timex.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/io.h>
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
|
||||
static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
|
||||
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
|
||||
struct mm_struct init_mm = INIT_MM(init_mm);
|
||||
|
||||
/*
|
||||
* Initial thread structure.
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include <linux/delay.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/percpu.h>
|
||||
#include <linux/timex.h>
|
||||
|
||||
#include <asm/hpet.h>
|
||||
#include <asm/timer.h>
|
||||
|
|
|
@ -1277,7 +1277,7 @@ static struct vmcs *alloc_vmcs_cpu(int cpu)
|
|||
struct page *pages;
|
||||
struct vmcs *vmcs;
|
||||
|
||||
pages = alloc_pages_node(node, GFP_KERNEL, vmcs_config.order);
|
||||
pages = alloc_pages_exact_node(node, GFP_KERNEL, vmcs_config.order);
|
||||
if (!pages)
|
||||
return NULL;
|
||||
vmcs = page_address(pages);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue