<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/arch/alpha/kernel, branch v3.13</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/arch/alpha/kernel?h=v3.13</id>
<link rel='self' href='https://git.amat.us/linux/atom/arch/alpha/kernel?h=v3.13'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-11-17T00:37:10Z</updated>
<entry>
<title>alpha: perf: fix out-of-bounds array access triggered from raw event</title>
<updated>2013-11-17T00:37:10Z</updated>
<author>
<name>Will Deacon</name>
<email>will.deacon@arm.com</email>
</author>
<published>2013-09-10T09:58:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6e22f8f2e8d81dcab4c40bc229d53388fda63dbc'/>
<id>urn:sha1:6e22f8f2e8d81dcab4c40bc229d53388fda63dbc</id>
<content type='text'>
Vince's perf fuzzer uncovered the following issue on Alpha:

Unable to handle kernel paging request at virtual address fffffbfe4e46a0e8
CPU 0 perf_fuzzer(1278): Oops 0
pc = [&lt;fffffc000031fbc0&gt;]  ra = [&lt;fffffc000031ff54&gt;]  ps = 0007    Not tainted
pc is at alpha_perf_event_set_period+0x60/0xf0
ra is at alpha_pmu_enable+0x1a4/0x1c0
v0 = 0000000000000000  t0 = 00000000000fffff  t1 = fffffc007b3f5800
t2 = fffffbff275faa94  t3 = ffffffffc9b9bd89  t4 = fffffbfe4e46a098
t5 = 0000000000000020  t6 = fffffbfe4e46a0b8  t7 = fffffc007f4c8000
s0 = 0000000000000000  s1 = fffffc0001b0c018  s2 = fffffc0001b0c020
s3 = fffffc007b3f5800  s4 = 0000000000000001  s5 = ffffffffc9b9bd85
s6 = 0000000000000001
a0 = 0000000000000006  a1 = fffffc007b3f5908  a2 = fffffbfe4e46a098
a3 = 00000005000108c0  a4 = 0000000000000000  a5 = 0000000000000000
t8 = 0000000000000001  t9 = 0000000000000001  t10= 0000000027829f6f
t11= 0000000000000020  pv = fffffc000031fb60  at = fffffc0000950900
gp = fffffc0000940900  sp = fffffc007f4cbca8
Disabling lock debugging due to kernel taint
Trace:
[&lt;fffffc000031ff54&gt;] alpha_pmu_enable+0x1a4/0x1c0
[&lt;fffffc000039f4e8&gt;] perf_pmu_enable+0x48/0x60
[&lt;fffffc00003a0d6c&gt;] __perf_install_in_context+0x15c/0x230
[&lt;fffffc000039d1f0&gt;] remote_function+0x80/0xa0
[&lt;fffffc00003a0c10&gt;] __perf_install_in_context+0x0/0x230
[&lt;fffffc000037b7e4&gt;] smp_call_function_single+0x1b4/0x1d0
[&lt;fffffc000039bb70&gt;] task_function_call+0x60/0x80
[&lt;fffffc00003a0c10&gt;] __perf_install_in_context+0x0/0x230
[&lt;fffffc000039bb44&gt;] task_function_call+0x34/0x80
[&lt;fffffc000039d3fc&gt;] perf_install_in_context+0x9c/0x150
[&lt;fffffc00003a0c10&gt;] __perf_install_in_context+0x0/0x230
[&lt;fffffc00003a5100&gt;] SYSC_perf_event_open+0x360/0xac0
[&lt;fffffc00003110c4&gt;] entSys+0xa4/0xc0

This is due to the raw event encoding being used as an index directly
into the ev67_mapping array, rather than being validated against the
ev67_pmc_event_type enumeration instead. Unlike other architectures,
which allow raw events to propagate into the hardware counters with
little interference, the limited number of events on Alpha and the
strict event &lt;-&gt; counter relationships mean that raw events actually
correspond to the Linux-specific Alpha events, rather than anything
defined by the architecture.

This patch adds a new callback to alpha_pmu_t for validating the raw
event encoding with the Linux event types for the PMU, preventing the
out-of-bounds array access.

Cc: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Acked-by: Michael Cree &lt;mcree@orcon.net.nz&gt;
Acked-by: Matt Turner &lt;mattst88@gmail.com&gt;
Signed-off-by: Will Deacon &lt;will.deacon@arm.com&gt;
</content>
</entry>
<entry>
<title>alpha: Use qemu+cserve provided high-res clock and alarm.</title>
<updated>2013-11-17T00:33:21Z</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2013-07-14T21:50:21Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4914d7b458e35a7db2f9c7dc6eb014620254bbbf'/>
<id>urn:sha1:4914d7b458e35a7db2f9c7dc6eb014620254bbbf</id>
<content type='text'>
QEMU provides a high-resolution timer and alarm; use this for
a clock source and clock event source when available.

Signed-off-by: Richard Henderson &lt;rth@twiddle.net&gt;
</content>
</entry>
<entry>
<title>alpha: Switch to GENERIC_CLOCKEVENTS</title>
<updated>2013-11-17T00:33:19Z</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2013-07-14T17:57:34Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a1659d6d128a7e0c2985bce7c957b66af1f71181'/>
<id>urn:sha1:a1659d6d128a7e0c2985bce7c957b66af1f71181</id>
<content type='text'>
This allows us to get rid of some hacky code for SMP.  Get rid of
some cycle counter hackery that's now handled by generic code via
clocksource + clock_event_device objects.

Signed-off-by: Richard Henderson &lt;rth@twiddle.net&gt;
</content>
</entry>
<entry>
<title>alpha: Enable the rpcc clocksource for single processor</title>
<updated>2013-11-17T00:33:18Z</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2013-07-14T16:55:08Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=db2d3260617ae8c9076ef12e6de06bd5b3d82cd3'/>
<id>urn:sha1:db2d3260617ae8c9076ef12e6de06bd5b3d82cd3</id>
<content type='text'>
Don't depend on SMP, just check the number of processors online.
This allows a single distribution kernel to use the clocksource
when run on a single processor machine.  Do depend on whether or
not we're using WTINT.

Signed-off-by: Richard Henderson &lt;rth@twiddle.net&gt;
</content>
</entry>
<entry>
<title>alpha: Reorganize rtc handling</title>
<updated>2013-11-17T00:33:16Z</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2013-07-13T22:49:45Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=85d0b3a573d8b711ee0c96199ac24a0f3283ed68'/>
<id>urn:sha1:85d0b3a573d8b711ee0c96199ac24a0f3283ed68</id>
<content type='text'>
Discontinue use of GENERIC_CMOS_UPDATE; rely on the RTC subsystem.

The marvel platform requires that the rtc only be touched from the
boot cpu.  This had been partially implemented with hooks for
get/set_rtc_time, but read/update_persistent_clock were not handled.
Move the hooks from the machine_vec to a special rtc_class_ops struct.

We had read_persistent_clock managing the epoch against which the
rtc hw is based, but this didn't apply to get_rtc_time or set_rtc_time.
This resulted in incorrect values when hwclock(8) gets involved.

Allow the epoch to be set from the kernel command-line, overriding
the autodetection, which is doomed to fail in 2020.  Further, by
implementing the rtc ioctl function, we can expose this epoch to
userland.

Elide the alarm functions that RTC_DRV_CMOS implements.  This was
highly questionable on Alpha, since the interrupt is used by the
system timer.

Signed-off-by: Richard Henderson &lt;rth@twiddle.net&gt;
</content>
</entry>
<entry>
<title>alpha: Primitive support for CPU power down.</title>
<updated>2013-11-17T00:33:15Z</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2013-07-12T16:36:21Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7f3bbb82e0c371d6881129f776c90130ba66f051'/>
<id>urn:sha1:7f3bbb82e0c371d6881129f776c90130ba66f051</id>
<content type='text'>
Use WTINT to wait for the next interrupt.  Squash the WTINT call
if the PALcode doesn't support it (e.g. MILO).  No attempt is yet
made to skip clock ticks during normal scheduling in order to stay
in power down mode longer.

Signed-off-by: Richard Henderson &lt;rth@twiddle.net&gt;
</content>
</entry>
<entry>
<title>alpha: Allow HZ to be configured</title>
<updated>2013-11-17T00:33:13Z</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2013-07-12T23:15:56Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=fddd87d6e135924b92499917bace103e46c22d00'/>
<id>urn:sha1:fddd87d6e135924b92499917bace103e46c22d00</id>
<content type='text'>
With the 1024Hz default, we spend 50% of QEMU emulation
processing timer interrupts.

Signed-off-by: Richard Henderson &lt;rth@twiddle.net&gt;
</content>
</entry>
<entry>
<title>alpha: Notice if we're being run under QEMU</title>
<updated>2013-11-17T00:33:12Z</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2011-04-28T14:29:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=994dcf7055df88623d25f3593b931a018a76b502'/>
<id>urn:sha1:994dcf7055df88623d25f3593b931a018a76b502</id>
<content type='text'>
When building a generic kernel, do a run-time check on the serial
number, like we do for MILO.  When building a custom kernel, make
this a configure-time check.

Signed-off-by: Richard Henderson &lt;rth@twiddle.net&gt;
</content>
</entry>
<entry>
<title>alpha: Eliminate compiler warning from memset macro</title>
<updated>2013-11-17T00:33:09Z</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2013-07-11T16:47:45Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a47e5bb5764f029f989a182b0dd2d4cce69f8b14'/>
<id>urn:sha1:a47e5bb5764f029f989a182b0dd2d4cce69f8b14</id>
<content type='text'>
Compiling with GCC 4.8 yields several instances of

crypto/vmac.c: In function ‘vmac_final’:
crypto/vmac.c:616:9: warning: value computed is not used [-Wunused-value]
  memset(&amp;mac, 0, sizeof(vmac_t));
         ^
arch/alpha/include/asm/string.h:31:25: note: in definition of macro ‘memset’
     ? __builtin_memset((s),0,(n))          \
                         ^
Converting the macro to an inline function eliminates this problem.

However, doing only that causes problems with the GCC 3.x series.  The
inline function cannot be named "memset", as otherwise we wind up with
recursion via __builtin_memset.  Solve this by adjusting the symbols
such that __memset is the inline, and ___memset is the real function.

Signed-off-by: Richard Henderson &lt;rth@twiddle.net&gt;
</content>
</entry>
<entry>
<title>alpha: Use handle_percpu_irq for the timer interrupt</title>
<updated>2013-07-19T20:54:26Z</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2013-07-19T19:43:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=dff64649e757870e9351e7d85917ae681d20ee54'/>
<id>urn:sha1:dff64649e757870e9351e7d85917ae681d20ee54</id>
<content type='text'>
Signed-off-by: Matt Turner &lt;mattst88@gmail.com&gt;
Signed-off-by: Richard Henderson &lt;rth@twiddle.net&gt;
</content>
</entry>
</feed>
