<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/arch, branch v3.2.41</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/arch?h=v3.2.41</id>
<link rel='self' href='https://git.amat.us/linux/atom/arch?h=v3.2.41'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-03-20T15:03:21Z</updated>
<entry>
<title>ARM: 7663/1: perf: fix ARMv7 EVTYPE_MASK to include NSH bit</title>
<updated>2013-03-20T15:03:21Z</updated>
<author>
<name>Will Deacon</name>
<email>will.deacon@arm.com</email>
</author>
<published>2013-02-28T16:49:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3e6f87330536fcbc887ccabb30887096f6ce5c0a'/>
<id>urn:sha1:3e6f87330536fcbc887ccabb30887096f6ce5c0a</id>
<content type='text'>
commit f2fe09b055e2549de41fb107b34c60bac4a1b0cf upstream.

Masked out PMXEVTYPER.NSH means that we can't enable profiling at PL2,
regardless of the settings in the HDCR.

This patch fixes the broken mask.

Reported-by: Christoffer Dall &lt;cdall@cs.columbia.edu&gt;
Signed-off-by: Will Deacon &lt;will.deacon@arm.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>xen/pci: We don't do multiple MSI's.</title>
<updated>2013-03-20T15:03:20Z</updated>
<author>
<name>Konrad Rzeszutek Wilk</name>
<email>konrad.wilk@oracle.com</email>
</author>
<published>2013-02-28T14:05:41Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6244df0906c25aa02324d38debc3f274bddc105d'/>
<id>urn:sha1:6244df0906c25aa02324d38debc3f274bddc105d</id>
<content type='text'>
commit 884ac2978a295b7df3c4a686d3bff6932bbbb460 upstream.

There is no hypercall to setup multiple MSI per PCI device.
As such with these two new commits:
-  08261d87f7d1b6253ab3223756625a5c74532293
   PCI/MSI: Enable multiple MSIs with pci_enable_msi_block_auto()
- 5ca72c4f7c412c2002363218901eba5516c476b1
   AHCI: Support multiple MSIs

we would call the PHYSDEVOP_map_pirq 'nvec' times with the same
contents of the PCI device. Sander discovered that we would get
the same PIRQ value 'nvec' times and return said values to the
caller. That of course meant that the device was configured only
with one MSI and AHCI would fail with:

ahci 0000:00:11.0: version 3.0
xen: registering gsi 19 triggering 0 polarity 1
xen: --&gt; pirq=19 -&gt; irq=19 (gsi=19)
(XEN) [2013-02-27 19:43:07] IOAPIC[0]: Set PCI routing entry (6-19 -&gt; 0x99 -&gt; IRQ 19 Mode:1 Active:1)
ahci 0000:00:11.0: AHCI 0001.0200 32 slots 4 ports 6 Gbps 0xf impl SATA mode
ahci 0000:00:11.0: flags: 64bit ncq sntf ilck pm led clo pmp pio slum part
ahci: probe of 0000:00:11.0 failed with error -22

That is b/c in ahci_host_activate the second call to
devm_request_threaded_irq  would return -EINVAL as we passed in
(on the second run) an IRQ that was never initialized.

Reported-and-Tested-by: Sander Eikelenboom &lt;linux@eikelenboom.it&gt;
Signed-off-by: Konrad Rzeszutek Wilk &lt;konrad.wilk@oracle.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: fix scheduling while atomic warning in alignment handling code</title>
<updated>2013-03-20T15:03:17Z</updated>
<author>
<name>Russell King</name>
<email>rmk+kernel@arm.linux.org.uk</email>
</author>
<published>2013-02-25T16:10:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b923f0d70914a257e4545ede4155f9889acc653b'/>
<id>urn:sha1:b923f0d70914a257e4545ede4155f9889acc653b</id>
<content type='text'>
commit b255188f90e2bade1bd11a986dd1ca4861869f4d upstream.

Paolo Pisati reports that IPv6 triggers this warning:

BUG: scheduling while atomic: swapper/0/0/0x40000100
Modules linked in:
[&lt;c001b1c4&gt;] (unwind_backtrace+0x0/0xf0) from [&lt;c0503c5c&gt;] (__schedule_bug+0x48/0x5c)
[&lt;c0503c5c&gt;] (__schedule_bug+0x48/0x5c) from [&lt;c0508608&gt;] (__schedule+0x700/0x740)
[&lt;c0508608&gt;] (__schedule+0x700/0x740) from [&lt;c007007c&gt;] (__cond_resched+0x24/0x34)
[&lt;c007007c&gt;] (__cond_resched+0x24/0x34) from [&lt;c05086dc&gt;] (_cond_resched+0x3c/0x44)
[&lt;c05086dc&gt;] (_cond_resched+0x3c/0x44) from [&lt;c0021f6c&gt;] (do_alignment+0x178/0x78c)
[&lt;c0021f6c&gt;] (do_alignment+0x178/0x78c) from [&lt;c00083e0&gt;] (do_DataAbort+0x34/0x98)
[&lt;c00083e0&gt;] (do_DataAbort+0x34/0x98) from [&lt;c0509a60&gt;] (__dabt_svc+0x40/0x60)
Exception stack(0xc0763d70 to 0xc0763db8)
3d60:                                     e97e805e e97e806e 2c000000 11000000
3d80: ea86bb00 0000002c 00000011 e97e807e c076d2a8 e97e805e e97e806e 0000002c
3da0: 3d000000 c0763dbc c04b98fc c02a8490 00000113 ffffffff
[&lt;c0509a60&gt;] (__dabt_svc+0x40/0x60) from [&lt;c02a8490&gt;] (__csum_ipv6_magic+0x8/0xc8)

Fix this by using probe_kernel_address() stead of __get_user().

Reported-by: Paolo Pisati &lt;p.pisati@gmail.com&gt;
Tested-by: Paolo Pisati &lt;p.pisati@gmail.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: VFP: fix emulation of second VFP instruction</title>
<updated>2013-03-20T15:03:17Z</updated>
<author>
<name>Russell King</name>
<email>rmk+kernel@arm.linux.org.uk</email>
</author>
<published>2013-02-25T16:09:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e1f3c390ec420adcd0e0b5723eba6c1c447a2d42'/>
<id>urn:sha1:e1f3c390ec420adcd0e0b5723eba6c1c447a2d42</id>
<content type='text'>
commit 5e4ba617c1b584b2e376f31a63bd4e734109318a upstream.

Martin Storsjö reports that the sequence:

        ee312ac1        vsub.f32        s4, s3, s2
        ee702ac0        vsub.f32        s5, s1, s0
        e59f0028        ldr             r0, [pc, #40]
        ee111a90        vmov            r1, s3

on Raspberry Pi (implementor 41 architecture 1 part 20 variant b rev 5)
where s3 is a denormal and s2 is zero results in incorrect behaviour -
the instruction "vsub.f32 s5, s1, s0" is not executed:

        VFP: bounce: trigger ee111a90 fpexc d0000780
        VFP: emulate: INST=0xee312ac1 SCR=0x00000000
        ...

As we can see, the instruction triggering the exception is the "vmov"
instruction, and we emulate the "vsub.f32 s4, s3, s2" but fail to
properly take account of the FPEXC_FP2V flag in FPEXC.  This is because
the test for the second instruction register being valid is bogus, and
will always skip emulation of the second instruction.

Reported-by: Martin Storsjö &lt;martin@martin.st&gt;
Tested-by: Martin Storsjö &lt;martin@martin.st&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>Revert "powerpc/eeh: Fix crash when adding a device in a slot with DDW"</title>
<updated>2013-03-20T15:03:15Z</updated>
<author>
<name>Ben Hutchings</name>
<email>ben@decadent.org.uk</email>
</author>
<published>2013-03-14T00:15:05Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b9d85cc001a1ff099d4870dd36b474e522d543c5'/>
<id>urn:sha1:b9d85cc001a1ff099d4870dd36b474e522d543c5</id>
<content type='text'>
This reverts commit 066f289835f09a3f744d6bac96f25e25d20b3ded which was
6a040ce72598159a74969a2d01ab0ba5ee6536b3 upstream.

This was not needed and is not suitable for 3.2.y.

Reported-by: Michael Neuling &lt;mikey@neuling.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>s390/timer: avoid overflow when programming clock comparator</title>
<updated>2013-03-06T03:24:18Z</updated>
<author>
<name>Heiko Carstens</name>
<email>heiko.carstens@de.ibm.com</email>
</author>
<published>2013-01-29T08:16:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=903fba3bd1e99fbcac8a5e45e78059ce9357f7c1'/>
<id>urn:sha1:903fba3bd1e99fbcac8a5e45e78059ce9357f7c1</id>
<content type='text'>
commit d911e03d097bdc01363df5d81c43f69432eb785c upstream.

Since ed4f209 "s390/time: fix sched_clock() overflow" a new helper function
is used to avoid overflows when converting TOD format values to nanosecond
values.
The kvm interrupt code formerly however only worked by accident because of
an overflow. It tried to program a timer that would expire in more than ~29
years. Because of the old TOD-to-nanoseconds overflow bug the real expiry
value however was much smaller, but now it isn't anymore.
This however triggers yet another bug in the function that programs the clock
comparator s390_next_ktime(): if the absolute "expires" value is after 2042
this will result in an overflow and the programmed value is lower than the
current TOD value which immediatly triggers a clock comparator (= timer)
interrupt.
Since the timer isn't expired it will be programmed immediately again and so
on... the result is a dead system.
To fix this simply program the maximum possible value if an overflow is
detected.

Reported-by: Christian Borntraeger &lt;borntraeger@de.ibm.com&gt;
Tested-by: Christian Borntraeger &lt;borntraeger@de.ibm.com&gt;
Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>x86: Make sure we can boot in the case the BDA contains pure garbage</title>
<updated>2013-03-06T03:24:14Z</updated>
<author>
<name>H. Peter Anvin</name>
<email>hpa@linux.intel.com</email>
</author>
<published>2013-02-27T20:46:40Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c2581d3df8552f9237245f85338f767c5a22660f'/>
<id>urn:sha1:c2581d3df8552f9237245f85338f767c5a22660f</id>
<content type='text'>
commit 7c10093692ed2e6f318387d96b829320aa0ca64c upstream.

On non-BIOS platforms it is possible that the BIOS data area contains
garbage instead of being zeroed or something equivalent (firmware
people: we are talking of 1.5K here, so please do the sane thing.)

We need on the order of 20-30K of low memory in order to boot, which
may grow up to &lt; 64K in the future.  We probably want to avoid the
lowest of the low memory.  At the same time, it seems extremely
unlikely that a legitimate EBDA would ever reach down to the 128K
(which would require it to be over half a megabyte in size.)  Thus,
pick 128K as the cutoff for "this is insane, ignore."  We may still
end up reserving a bunch of extra memory on the low megabyte, but that
is not really a major issue these days.  In the worst case we lose
512K of RAM.

This code really should be merged with trim_bios_range() in
arch/x86/kernel/setup.c, but that is a bigger patch for a later merge
window.

Reported-by: Darren Hart &lt;dvhart@linux.intel.com&gt;
Signed-off-by: H. Peter Anvin &lt;hpa@linux.intel.com&gt;
Cc: Matt Fleming &lt;matt.fleming@intel.com&gt;
Link: http://lkml.kernel.org/n/tip-oebml055yyfm8yxmria09rja@git.kernel.org
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>powerpc/kexec: Disable hard IRQ before kexec</title>
<updated>2013-03-06T03:24:11Z</updated>
<author>
<name>Phileas Fogg</name>
<email>phileas-fogg@mail.ru</email>
</author>
<published>2013-02-22T23:32:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=819a56e867d8e4ebe87060eaf576c0032a8963c2'/>
<id>urn:sha1:819a56e867d8e4ebe87060eaf576c0032a8963c2</id>
<content type='text'>
commit 8520e443aa56cc157b015205ea53e7b9fc831291 upstream.

Disable hard IRQ before kexec a new kernel image.
Not doing it can result in corrupted data in the memory segments
reserved for the new kernel.

Signed-off-by: Phileas Fogg &lt;phileas-fogg@mail.ru&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>x86, efi: Make "noefi" really disable EFI runtime serivces</title>
<updated>2013-03-06T03:24:08Z</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@intel.com</email>
</author>
<published>2013-02-20T20:36:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1a116473beaf0b6c1ca6bfe18967094ce513f029'/>
<id>urn:sha1:1a116473beaf0b6c1ca6bfe18967094ce513f029</id>
<content type='text'>
commit fb834c7acc5e140cf4f9e86da93a66de8c0514da upstream.

commit 1de63d60cd5b ("efi: Clear EFI_RUNTIME_SERVICES rather than
EFI_BOOT by "noefi" boot parameter") attempted to make "noefi" true to
its documentation and disable EFI runtime services to prevent the
bricking bug described in commit e0094244e41c ("samsung-laptop:
Disable on EFI hardware"). However, it's not possible to clear
EFI_RUNTIME_SERVICES from an early param function because
EFI_RUNTIME_SERVICES is set in efi_init() *after* parse_early_param().

This resulted in "noefi" effectively becoming a no-op and no longer
providing users with a way to disable EFI, which is bad for those
users that have buggy machines.

Reported-by: Walt Nelson Jr &lt;walt0924@gmail.com&gt;
Cc: Satoru Takeuchi &lt;takeuchi_satoru@jp.fujitsu.com&gt;
Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
Link: http://lkml.kernel.org/r/1361392572-25657-1-git-send-email-matt@console-pimps.org
Signed-off-by: H. Peter Anvin &lt;hpa@linux.intel.com&gt;
[bwh: Backported to 3.2: efi_runtime_init() is not a separate function,
 so put a whole set of statements in an if (!disable_runtime) block]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>xen: Send spinlock IPI to all waiters</title>
<updated>2013-03-06T03:24:08Z</updated>
<author>
<name>Stefan Bader</name>
<email>stefan.bader@canonical.com</email>
</author>
<published>2013-02-15T08:48:52Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7afb6c33d409713fd204557c183bbe47c4983ea8'/>
<id>urn:sha1:7afb6c33d409713fd204557c183bbe47c4983ea8</id>
<content type='text'>
commit 76eaca031f0af2bb303e405986f637811956a422 upstream.

There is a loophole between Xen's current implementation of
pv-spinlocks and the scheduler. This was triggerable through
a testcase until v3.6 changed the TLB flushing code. The
problem potentially is still there just not observable in the
same way.

What could happen was (is):

1. CPU n tries to schedule task x away and goes into a slow
   wait for the runq lock of CPU n-# (must be one with a lower
   number).
2. CPU n-#, while processing softirqs, tries to balance domains
   and goes into a slow wait for its own runq lock (for updating
   some records). Since this is a spin_lock_irqsave in softirq
   context, interrupts will be re-enabled for the duration of
   the poll_irq hypercall used by Xen.
3. Before the runq lock of CPU n-# is unlocked, CPU n-1 receives
   an interrupt (e.g. endio) and when processing the interrupt,
   tries to wake up task x. But that is in schedule and still
   on_cpu, so try_to_wake_up goes into a tight loop.
4. The runq lock of CPU n-# gets unlocked, but the message only
   gets sent to the first waiter, which is CPU n-# and that is
   busily stuck.
5. CPU n-# never returns from the nested interruption to take and
   release the lock because the scheduler uses a busy wait.
   And CPU n never finishes the task migration because the unlock
   notification only went to CPU n-#.

To avoid this and since the unlocking code has no real sense of
which waiter is best suited to grab the lock, just send the IPI
to all of them. This causes the waiters to return from the hyper-
call (those not interrupted at least) and do active spinlocking.

BugLink: http://bugs.launchpad.net/bugs/1011792

Acked-by: Jan Beulich &lt;JBeulich@suse.com&gt;
Signed-off-by: Stefan Bader &lt;stefan.bader@canonical.com&gt;
Signed-off-by: Konrad Rzeszutek Wilk &lt;konrad.wilk@oracle.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
</feed>
