06 May, 2011
1 commit
-
This patch adds a multiple message send syscall and is the send
version of the existing recvmmsg syscall. This is heavily
based on the patch by Arnaldo that added recvmmsg.I wrote a microbenchmark to test the performance gains of using
this new syscall:http://ozlabs.org/~anton/junkcode/sendmmsg_test.c
The test was run on a ppc64 box with a 10 Gbit network card. The
benchmark can send both UDP and RAW ethernet packets.64B UDP
batch pkts/sec
1 804570
2 872800 (+ 8 %)
4 916556 (+14 %)
8 939712 (+17 %)
16 952688 (+18 %)
32 956448 (+19 %)
64 964800 (+20 %)64B raw socket
batch pkts/sec
1 1201449
2 1350028 (+12 %)
4 1461416 (+22 %)
8 1513080 (+26 %)
16 1541216 (+28 %)
32 1553440 (+29 %)
64 1557888 (+30 %)We see a 20% improvement in throughput on UDP send and 30%
on raw socket send.[ Add sparc syscall entries. -DaveM ]
Signed-off-by: Anton Blanchard
Signed-off-by: David S. Miller
22 Apr, 2011
1 commit
-
mac-fec.c was setting individual UDP address registers instead of multicast
group address registers when joining a multicast group.
This prevented from correctly receiving UDP multicast packets.
According to datasheet, replaced hash_table_high and hash_table_low
with grp_hash_table_high and grp_hash_table_low respectively.
Also renamed hash_table_* with grp_hash_table_* in struct fec declaration
for 8xx: these registers are used only for multicast there.Tested on a MPC5121 based board.
Build tested also against mpc866_ads_defconfig.Signed-off-by: Andrea Galbusera
Signed-off-by: David S. Miller
08 Apr, 2011
1 commit
-
* 'for-linus2' of git://git.profusion.mobi/users/lucas/linux-2.6:
Fix common misspellings
05 Apr, 2011
6 commits
-
Signed-off-by: Matt Evans
Signed-off-by: Benjamin Herrenschmidt -
Without this, "holes" in the CPU numbering can cause us to
free too many PACAsSigned-off-by: Benjamin Herrenschmidt
-
Signed-off-by: Benjamin Herrenschmidt
-
Commit b3df895aebe091b1657 "powerpc/kexec: Add support for FSL-BookE"
introduced the original PPC_STD_MMU_64 checks around the function
crash_kexec_wait_realmode(). Then commit c2be05481f61252
"powerpc: Fix default_machine_crash_shutdown #ifdef botch" changed
the ifdef around the calling site to add a check on SMP, but the
ifdef around the function itself was left unchanged, leaving an
unused function for PPC_STD_MMU_64=y and SMP=nRather than have two ifdefs that can get out of sync like this,
simply put the corrected conditional around the function and use
a stub to get rid of one set of ifdefs completely.Signed-off-by: Paul Gortmaker
Signed-off-by: Benjamin Herrenschmidt -
Fix some minor typos:
* informations => information
* there own => their own
* these => thisSigned-off-by: Sylvestre Ledru
Signed-off-by: Randy Dunlap
Signed-off-by: Linus Torvalds
04 Apr, 2011
1 commit
-
PCIe memory address space is 1:1 mapped with u-boot.
Update dts of Px020RDB i.e. P1020RDB and P2020RDB to match the address map
changes in u-boot.Signed-off-by: Prabhakar Kushwaha
Signed-off-by: Kumar Gala
01 Apr, 2011
17 commits
-
The generic code properly re-initializes the preempt count in the
idle thread nowSigned-off-by: Benjamin Herrenschmidt
-
Signed-off-by: Benjamin Herrenschmidt
-
Instead of creating idle threads at boot for all possible CPUs, we
create them on demand, like x86 or ARM, and we properly call init_idle
to re-initialize an idle thread when a CPU was unplugged and is now
re-plugged.Signed-off-by: Benjamin Herrenschmidt
-
Instead, keep it static, expose an accessor and use that from
the PowerMac code. Avoids easy namespace collisions and will
make it easier to consolidate with other implementations.Signed-off-by: Benjamin Herrenschmidt
-
On some machines that use i2c to synchronize the timebases (such
as PowerMac7,2/7,3 G5 machines), hotplug CPU would crash when
putting back a new CPU online due to the underlying i2c bus being
closed.This uses the newly added bringup_done() callback to move the close
along with other housekeeping calls, and adds a CPU notifier to
re-open the i2c bus around subsequent hotplug operationsSigned-off-by: Benjamin Herrenschmidt
-
This allows us to stop abusing smp_ops->setup_cpu() for cleanup
tasks that have to take place after the initial boot time CPU
bringup.Signed-off-by: Benjamin Herrenschmidt
-
The current code soft-disables, and then goes to NAP mode which
turns interrupts on. That means that if an interrupt occurs, we
will hit the masked interrupt code path which isn't what we want,
as it will return with EE off, which will either get us out of
NAP mode, or fail to enter it (according to spec).Instead, let's just rely on the fact that it is safe to take
decrementer interrupts on an offline CPU and leave interrupts
enabled. We can also get rid of the special case in asm for
power4_cpu_offline_powersave() and just use power4_idle().Signed-off-by: Benjamin Herrenschmidt
-
Those instructions do nothing on non-threaded processors such
as 970's used on those machines.Signed-off-by: Benjamin Herrenschmidt
-
Signed-off-by: Benjamin Herrenschmidt
-
Use the generic code, just add the MPIC priority setting,
I don't see any use in mucking around with the decrementer,
as 32-bit will have EE off all along, and 64-bit will be able
to deal with it.Signed-off-by: Benjamin Herrenschmidt
-
Signed-off-by: Benjamin Herrenschmidt
-
Use generic cpu_state, call idle_task_exit() properly, and
remove smp_core99_cpu_die() which isn't useful, the generic
function does the job just fine. -
Remove the last remnants of cpu_enable(), everybody uses the normal
__cpu_up() path nowSigned-off-by: Benjamin Herrenschmidt
-
Nobody uses it, besides we should always use the normal __cpu_up
path anywaysSigned-off-by: Benjamin Herrenschmidt
-
This is used by some "soft" hotplug implementations. I needs to
call idle_task_exit() when the CPU is going away, and we remove
the now no-longer needed set_cpu_online() and local_irq_enable()
which are handled by the return to start_secondarySigned-off-by: Benjamin Herrenschmidt
-
Various thing are torn down when a CPU is hot-unplugged. That CPU
is expected to go back to start_secondary when re-plugged to re
initialize everything, such as clock sources, maps, ...Some implementations just return from cpu_die() callback
in the idle loop when the CPU is "re-plugged". This is not enough.We fix it using a little asm trampoline which resets the stack
and calls back into start_secondary as if we were all fresh from
boot. The trampoline already existed on ppc64, but we add it for
ppc32Signed-off-by: Benjamin Herrenschmidt
-
With some implementations, it is possible that a timer interrupt
occurs every few seconds on an offline CPU. In this case, just
re-arm the decrementer and return immediatelySigned-off-by: Benjamin Herrenschmidt
31 Mar, 2011
2 commits
-
Fixes generated by 'codespell' and manually reviewed.
Signed-off-by: Lucas De Marchi
-
…git/tip/linux-2.6-tip
* 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
avr32: Fix missing irq namespace conversion
powerpc: qe_ic: Rename get_irq_desc_data and get_irq_desc_chip
genirq: Remove the now obsolete config options and select statements
arm: versatile : Fix typo introduced in irq namespace cleanup
sound: Fixup the last user of the old irq functions
genirq: Remove obsolete comment
genirq: Remove now obsolete set_irq_wake()
sh: Fix irq cleanup fallout
x86: apb_timer: Fixup genirq fallout
genirq: Fix misnamed label in handle_edge_eoi_irqFix up crazy conflict in arch/powerpc/include/asm/qe_ic.h:
- commit eead4d5c63ff ("powerpc: qe_ic: Rename get_irq_desc_data and
get_irq_desc_chip") made the helper functions use
irq_desc_get_handler_data() instead of the legacy (and no longer
existing) get_irq_desc_data.- commit d4db35e8dc96 ("powerpc/qe_ic: Fix another breakage from the
irq_data conversion") used irq_desc_get_chip_data() instead.According to Thomas, the former is the correct direct conversion, but it
does look like both should work (arch/powerpc/sysdev/qe_lib/qe_ic.c
seems to initialize both to the same thing), and the chip data in some
ways is the more logical. Somebody should really decide on one of the
other.This merge picks irq_desc_get_handler_data() as the straightforward pure
conversion to new names, as per Thomas.
30 Mar, 2011
11 commits
-
These two functions disappeared in commit
0c6f8a8b917ad361319c8ace3e9f28e69bfdb4c1
"genirq: Remove compat code"but they still exist in qe_ic.h.
This patch renames the function to their new names.Signed-off-by: Richard Cochran
Cc: linuxppc-dev@lists.ozlabs.org
Cc: Lennert Buytenhek
Cc: Benjamin Herrenschmidt
LKML-Reference:
Signed-off-by: Thomas Gleixner -
Signed-off-by: Thomas Gleixner
-
Signed-off-by: Benjamin Herrenschmidt
-
Signed-off-by: Benjamin Herrenschmidt
-
Missed one instance when moving that to the core code.
Signed-off-by: Thomas Gleixner
Cc: linuxppc-dev@lists.ozlabs.org
Cc: michael@ellerman.id.au
Cc: mingo@elte.hu
Signed-off-by: Benjamin Herrenschmidt -
Ensure the Chelsio T3/T4 network drivers and iWARP drivers are
enabled in the pseries config.Signed-off-by: Anton Blanchard
Signed-off-by: Benjamin Herrenschmidt -
Recent upstream builds with allmodconfig fail due to lack of space
between 0x3000 and 0x6000. We have a hard block at 0x7000 but we can
spare a page by moving the STAB0 from 0x6000 to 0x8000.Signed-off-by: Benjamin Herrenschmidt
-
commit cf9efce0ce31 (powerpc: Account time using timebase rather
than PURR) used in_irq() to detect if the time was spent in
interrupt processing. This only catches hardirq context so if we
are in softirq context and in the idle loop we end up accounting it
as idle time. If we instead use in_interrupt() we catch both softirq
and hardirq time.The issue was found when running a network intensive workload. top
showed the following:0.0%us, 1.1%sy, 0.0%ni, 85.7%id, 0.0%wa, 9.9%hi, 3.3%si, 0.0%st
85.7% idle. But this was wildly different to the perf events data.
To confirm the suspicion I ran something to keep the core busy:# yes > /dev/null &
8.2%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 10.3%hi, 81.4%si, 0.0%st
We only got 8.2% of the CPU for the userspace task and softirq has
shot up to 81.4%.With the patch below top shows the correct stats:
0.0%us, 0.0%sy, 0.0%ni, 5.3%id, 0.0%wa, 13.3%hi, 81.3%si, 0.0%st
Signed-off-by: Anton Blanchard
Cc: stable@kernel.org
Signed-off-by: Benjamin Herrenschmidt -
If a given firmware doesn't have a token to support query-cpu-stopped-state,
its not likely to change during the lifetime of the kernel.Only print this information once, not once per secondary thread.
While here, make the line wrap grep friendly.
Signed-off-by: Milton Miller
Signed-off-by: Benjamin Herrenschmidt -
To try to avoid future confusion, rename irq to hwirq when it refers
to a xics domain number instead of a linux irq number.Signed-off-by: Milton Miller
Signed-off-by: Benjamin Herrenschmidt -
commit 79f26c268ebad29bd75d078cfc09d3d82b30ccbd (powerpc:
platforms/pseries irq_data conversion) pushed irq_desc down into many
functions, dererencing the descriptor irq field as late as possible.But it incorrectly passed a linix virtural irq number to RTAS,
resulting in the interrupt not being disabled and possibly
other bad things, such as another interrupt being disabled and/or
a checkstop.In addition this missed the point of xics_mask_unknown_vec and
the seperation of xics_mask_real_irq from xics_mask_irq. When
xics_mask_unknown_vec is called it's because the hardware delivered an
irq source for which we have no linux irq allocated, and thefore we can
not have an irq_desc allocated.Revert xics_mask_real_irq to its prior version, naming the argument
hwirq to highlight the difference.Signed-off-by: Milton Miller
Signed-off-by: Benjamin Herrenschmidt