Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 242329
b: refs/heads/master
c: f9b615d
h: refs/heads/master
i:
  242327: 0392b76
v: v3
  • Loading branch information
Thomas Gleixner authored and Pekka Enberg committed Mar 24, 2011
1 parent 2f26890 commit e372a0b
Show file tree
Hide file tree
Showing 243 changed files with 2,783 additions and 3,712 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b2b755b5f10eb32fbdc73a9907c07006b17f714b
refs/heads/master: f9b615de4663c4b852e07257e9f967df6a0161c0
5 changes: 5 additions & 0 deletions trunk/Documentation/block/biodoc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -963,6 +963,11 @@ elevator_dispatch_fn* fills the dispatch queue with ready requests.

elevator_add_req_fn* called to add a new request into the scheduler

elevator_queue_empty_fn returns true if the merge queue is empty.
Drivers shouldn't use this, but rather check
if elv_next_request is NULL (without losing the
request if one exists!)

elevator_former_req_fn
elevator_latter_req_fn These return the request before or after the
one specified in disk sort order. Used by the
Expand Down
30 changes: 29 additions & 1 deletion trunk/Documentation/cgroups/blkio-controller.txt
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ Proportional weight policy files
- Specifies per cgroup weight. This is default weight of the group
on all the devices until and unless overridden by per device rule.
(See blkio.weight_device).
Currently allowed range of weights is from 10 to 1000.
Currently allowed range of weights is from 100 to 1000.

- blkio.weight_device
- One can specify per cgroup per device rules using this interface.
Expand Down Expand Up @@ -343,6 +343,34 @@ Common files among various policies

CFQ sysfs tunable
=================
/sys/block/<disk>/queue/iosched/group_isolation
-----------------------------------------------

If group_isolation=1, it provides stronger isolation between groups at the
expense of throughput. By default group_isolation is 0. In general that
means that if group_isolation=0, expect fairness for sequential workload
only. Set group_isolation=1 to see fairness for random IO workload also.

Generally CFQ will put random seeky workload in sync-noidle category. CFQ
will disable idling on these queues and it does a collective idling on group
of such queues. Generally these are slow moving queues and if there is a
sync-noidle service tree in each group, that group gets exclusive access to
disk for certain period. That means it will bring the throughput down if
group does not have enough IO to drive deeper queue depths and utilize disk
capacity to the fullest in the slice allocated to it. But the flip side is
that even a random reader should get better latencies and overall throughput
if there are lots of sequential readers/sync-idle workload running in the
system.

If group_isolation=0, then CFQ automatically moves all the random seeky queues
in the root group. That means there will be no service differentiation for
that kind of workload. This leads to better throughput as we do collective
idling on root sync-noidle tree.

By default one should run with group_isolation=0. If that is not sufficient
and one wants stronger isolation between groups, then set group_isolation=1
but this will come at cost of reduced throughput.

/sys/block/<disk>/queue/iosched/slice_idle
------------------------------------------
On a faster hardware CFQ can be slow, especially with sequential workload.
Expand Down
17 changes: 9 additions & 8 deletions trunk/Documentation/iostats.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
I/O statistics fields
---------------

Last modified Sep 30, 2003

Since 2.4.20 (and some versions before, with patches), and 2.5.45,
more extensive disk statistics have been introduced to help measure disk
activity. Tools such as sar and iostat typically interpret these and do
Expand Down Expand Up @@ -44,12 +46,11 @@ the above example, the first field of statistics would be 446216.
By contrast, in 2.6 if you look at /sys/block/hda/stat, you'll
find just the eleven fields, beginning with 446216. If you look at
/proc/diskstats, the eleven fields will be preceded by the major and
minor device numbers, and device name. Each of these formats provides
minor device numbers, and device name. Each of these formats provide
eleven fields of statistics, each meaning exactly the same things.
All fields except field 9 are cumulative since boot. Field 9 should
go to zero as I/Os complete; all others only increase (unless they
overflow and wrap). Yes, these are (32-bit or 64-bit) unsigned long
(native word size) numbers, and on a very busy or long-lived system they
go to zero as I/Os complete; all others only increase. Yes, these are
32 bit unsigned numbers, and on a very busy or long-lived system they
may wrap. Applications should be prepared to deal with that; unless
your observations are measured in large numbers of minutes or hours,
they should not wrap twice before you notice them.
Expand Down Expand Up @@ -95,11 +96,11 @@ introduced when changes collide, so (for instance) adding up all the
read I/Os issued per partition should equal those made to the disks ...
but due to the lack of locking it may only be very close.

In 2.6, there are counters for each CPU, which make the lack of locking
almost a non-issue. When the statistics are read, the per-CPU counters
are summed (possibly overflowing the unsigned long variable they are
In 2.6, there are counters for each cpu, which made the lack of locking
almost a non-issue. When the statistics are read, the per-cpu counters
are summed (possibly overflowing the unsigned 32-bit variable they are
summed to) and the result given to the user. There is no convenient
user interface for accessing the per-CPU counters themselves.
user interface for accessing the per-cpu counters themselves.

Disks vs Partitions
-------------------
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/arm/mm/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ __tagtable(ATAG_INITRD2, parse_tag_initrd2);
*/
struct meminfo meminfo;

void show_mem(unsigned int filter)
void show_mem(void)
{
int free = 0, total = 0, reserved = 0;
int shared = 0, cached = 0, slab = 0, i;
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/ia64/mm/contig.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ static unsigned long max_gap;
* Shows a simple page count of reserved and used pages in the system.
* For discontig machines, it does this on a per-pgdat basis.
*/
void show_mem(unsigned int filter)
void show_mem(void)
{
int i, total_reserved = 0;
int total_shared = 0, total_cached = 0;
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/ia64/mm/discontig.c
Original file line number Diff line number Diff line change
Expand Up @@ -614,7 +614,7 @@ void __cpuinit *per_cpu_init(void)
* Shows a simple page count of reserved and used pages in the system.
* For discontig machines, it does this on a per-pgdat basis.
*/
void show_mem(unsigned int filter)
void show_mem(void)
{
int i, total_reserved = 0;
int total_shared = 0, total_cached = 0;
Expand Down
10 changes: 4 additions & 6 deletions trunk/arch/mn10300/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ config MN10300
select HAVE_OPROFILE
select HAVE_GENERIC_HARDIRQS
select GENERIC_HARDIRQS_NO_DEPRECATED
select HAVE_ARCH_TRACEHOOK
select HAVE_ARCH_KGDB

config AM33_2
def_bool n
Expand Down Expand Up @@ -403,9 +401,9 @@ comment "[!] NOTE: A lower number/level indicates a higher priority (0 is highes
comment "____Non-maskable interrupt levels____"
comment "The following must be set to a higher priority than local_irq_disable() and on-chip serial"

config DEBUGGER_IRQ_LEVEL
int "DEBUGGER interrupt priority"
depends on KERNEL_DEBUGGER
config GDBSTUB_IRQ_LEVEL
int "GDBSTUB interrupt priority"
depends on GDBSTUB
range 0 1 if LINUX_CLI_LEVEL = 2
range 0 2 if LINUX_CLI_LEVEL = 3
range 0 3 if LINUX_CLI_LEVEL = 4
Expand Down Expand Up @@ -439,7 +437,7 @@ config LINUX_CLI_LEVEL
EPSW.IM from 7. Any interrupt is permitted for which the level is
lower than EPSW.IM.

Certain interrupts, such as DEBUGGER and virtual MN10300 on-chip
Certain interrupts, such as GDBSTUB and virtual MN10300 on-chip
serial DMA interrupts are allowed to interrupt normal disabled
sections.

Expand Down
17 changes: 1 addition & 16 deletions trunk/arch/mn10300/Kconfig.debug
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ config KPROBES

config GDBSTUB
bool "Remote GDB kernel debugging"
depends on DEBUG_KERNEL && DEPRECATED
depends on DEBUG_KERNEL
select DEBUG_INFO
select FRAME_POINTER
help
Expand All @@ -46,9 +46,6 @@ config GDBSTUB
RAM to avoid excessive linking time. This is only useful for kernel
hackers. If unsure, say N.

This is deprecated in favour of KGDB and will be removed in a later
version.

config GDBSTUB_IMMEDIATE
bool "Break into GDB stub immediately"
depends on GDBSTUB
Expand All @@ -57,14 +54,6 @@ config GDBSTUB_IMMEDIATE
possible, leaving the program counter at the beginning of
start_kernel() in init/main.c.

config GDBSTUB_ALLOW_SINGLE_STEP
bool "Allow software single-stepping in GDB stub"
depends on GDBSTUB && !SMP && !PREEMPT
help
Allow GDB stub to perform software single-stepping through the
kernel. This doesn't work very well on SMP or preemptible kernels as
it uses temporary breakpoints to emulate single-stepping.

config GDB_CONSOLE
bool "Console output to GDB"
depends on GDBSTUB
Expand Down Expand Up @@ -153,7 +142,3 @@ config GDBSTUB_ON_TTYSx
default y

endmenu

config KERNEL_DEBUGGER
def_bool y
depends on GDBSTUB || KGDB
43 changes: 0 additions & 43 deletions trunk/arch/mn10300/include/asm/debugger.h

This file was deleted.

21 changes: 4 additions & 17 deletions trunk/arch/mn10300/include/asm/div64.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,6 @@

extern void ____unhandled_size_in_do_div___(void);

/*
* Beginning with gcc 4.6, the MDR register is represented explicitly. We
* must, therefore, at least explicitly clobber the register when we make
* changes to it. The following assembly fragments *could* be rearranged in
* order to leave the moves to/from the MDR register to the compiler, but the
* gains would be minimal at best.
*/
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
# define CLOBBER_MDR_CC "mdr", "cc"
#else
# define CLOBBER_MDR_CC "cc"
#endif

/*
* divide n by base, leaving the result in n and returning the remainder
* - we can do this quite efficiently on the MN10300 by cascading the divides
Expand All @@ -42,7 +29,7 @@ extern void ____unhandled_size_in_do_div___(void);
"mov mdr,%1 \n" \
: "+r"(n), "=d"(__rem) \
: "r"(base), "1"(__rem) \
: CLOBBER_MDR_CC \
: "cc" \
); \
} else if (sizeof(n) <= 8) { \
union { \
Expand All @@ -61,7 +48,7 @@ extern void ____unhandled_size_in_do_div___(void);
: "=d"(__rem), "=r"(__quot.w[1]), "=r"(__quot.w[0]) \
: "r"(base), "0"(__rem), "1"(__quot.w[1]), \
"2"(__quot.w[0]) \
: CLOBBER_MDR_CC \
: "cc" \
); \
n = __quot.l; \
} else { \
Expand All @@ -85,7 +72,7 @@ unsigned __muldiv64u(unsigned val, unsigned mult, unsigned div)
* MDR = MDR:val%div */
: "=r"(result)
: "0"(val), "ir"(mult), "r"(div)
: CLOBBER_MDR_CC
: "cc"
);

return result;
Expand All @@ -106,7 +93,7 @@ signed __muldiv64s(signed val, signed mult, signed div)
* MDR = MDR:val%div */
: "=r"(result)
: "0"(val), "ir"(mult), "r"(div)
: CLOBBER_MDR_CC
: "cc"
);

return result;
Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/mn10300/include/asm/fpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ static inline void clear_using_fpu(struct task_struct *tsk)

extern asmlinkage void fpu_kill_state(struct task_struct *);
extern asmlinkage void fpu_exception(struct pt_regs *, enum exception_code);
extern asmlinkage void fpu_invalid_op(struct pt_regs *, enum exception_code);
extern asmlinkage void fpu_init_state(void);
extern asmlinkage void fpu_save(struct fpu_state_struct *);
extern int fpu_setup_sigcontext(struct fpucontext *buf);
Expand Down Expand Up @@ -112,6 +113,7 @@ static inline void flush_fpu(void)

extern asmlinkage
void unexpected_fpu_exception(struct pt_regs *, enum exception_code);
#define fpu_invalid_op unexpected_fpu_exception
#define fpu_exception unexpected_fpu_exception

struct task_struct;
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/mn10300/include/asm/irqflags.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
/*
* interrupt control
* - "disabled": run in IM1/2
* - level 0 - kernel debugger
* - level 0 - GDB stub
* - level 1 - virtual serial DMA (if present)
* - level 5 - normal interrupt priority
* - level 6 - timer interrupt
Expand Down
Loading

0 comments on commit e372a0b

Please sign in to comment.