<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/powerpc/platforms/maple, branch linux-4.10.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.10.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.10.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2016-09-20T10:57:12Z</updated>
<entry>
<title>powerpc: Remove all usages of NO_IRQ</title>
<updated>2016-09-20T10:57:12Z</updated>
<author>
<name>Michael Ellerman</name>
</author>
<published>2016-09-06T11:53:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ef24ba7091517d2bbf9ba2cb4256c0dccd51d248'/>
<id>urn:sha1:ef24ba7091517d2bbf9ba2cb4256c0dccd51d248</id>
<content type='text'>
NO_IRQ has been == 0 on powerpc for just over ten years (since commit
0ebfff1491ef ("[POWERPC] Add new interrupt mapping core and change
platforms to use it")). It's also 0 on most other arches.

Although it's fairly harmless, every now and then it causes confusion
when a driver is built on powerpc and another arch which doesn't define
NO_IRQ. There's at least 6 definitions of NO_IRQ in drivers/, at least
some of which are to work around that problem.

So we'd like to remove it. This is fairly trivial in the arch code, we
just convert:

    if (irq == NO_IRQ)	to	if (!irq)
    if (irq != NO_IRQ)	to	if (irq)
    irq = NO_IRQ;	to	irq = 0;
    return NO_IRQ;	to	return 0;

And a few other odd cases as well.

At least for now we keep the #define NO_IRQ, because there is driver
code that uses NO_IRQ and the fixes to remove those will go via other
trees.

Note we also change some occurrences in PPC sound drivers, drivers/ps3,
and drivers/macintosh.

Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc/sparse: Make a bunch of things static</title>
<updated>2016-09-13T07:35:47Z</updated>
<author>
<name>Daniel Axtens</name>
</author>
<published>2016-09-06T05:32:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7c98bd72081c44670e2d0b60aed364180ebc0611'/>
<id>urn:sha1:7c98bd72081c44670e2d0b60aed364180ebc0611</id>
<content type='text'>
Squash a bunch of sparse warnings by making things static.

Reviewed-by: Andrew Donnellan &lt;andrew.donnellan@au1.ibm.com&gt;
Signed-off-by: Daniel Axtens &lt;dja@axtens.net&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc: Get rid of ppc_md.init_early()</title>
<updated>2016-07-21T09:07:26Z</updated>
<author>
<name>Benjamin Herrenschmidt</name>
</author>
<published>2016-07-05T05:04:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f2d576948d6cec16e4aae201d738c4f22039a551'/>
<id>urn:sha1:f2d576948d6cec16e4aae201d738c4f22039a551</id>
<content type='text'>
It is now called right after platform probe, so the probe function
can just do the job.

Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc/64: Move 64-bit probe_machine() to later in the boot process</title>
<updated>2016-07-21T08:59:22Z</updated>
<author>
<name>Benjamin Herrenschmidt</name>
</author>
<published>2016-07-05T05:04:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=406b0b6ae3fcd5c7946a68a9e43b470c79d292a2'/>
<id>urn:sha1:406b0b6ae3fcd5c7946a68a9e43b470c79d292a2</id>
<content type='text'>
We no long need the machine type that early, so we can move probe_machine()
to after the device-tree has been expanded. This will allow further
consolidation.

Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc/64: Move MMU backend selection out of platform code</title>
<updated>2016-07-21T08:56:38Z</updated>
<author>
<name>Benjamin Herrenschmidt</name>
</author>
<published>2016-07-05T05:03:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=166dd7d3fbf2df183926f0e4b4855f6cbd8da945'/>
<id>urn:sha1:166dd7d3fbf2df183926f0e4b4855f6cbd8da945</id>
<content type='text'>
We move it into early_mmu_init() based on firmware features. For PS3,
we have to move the setting of these into early_init_devtree().

Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc/dart: Use a cachable DART</title>
<updated>2016-07-21T08:55:54Z</updated>
<author>
<name>Benjamin Herrenschmidt</name>
</author>
<published>2016-07-05T05:03:47Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c40785ad305b32e9b0b5fbc888f1f5d57f29bf44'/>
<id>urn:sha1:c40785ad305b32e9b0b5fbc888f1f5d57f29bf44</id>
<content type='text'>
Instead of punching a hole in the linear mapping, just use normal
cachable memory, and apply the flush sequence documented in the
CPC625 (aka U3) user manual.

This allows us to remove quite a bit of code related to the early
allocation of the DART and the hole in the linear mapping. We can
also get rid of the copy of the DART for suspend/resume as the
original memory can just be saved/restored now, as long as we
properly sync the caches.

Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
[mpe: Integrate dart_init() fix to return ENODEV when DART disabled]
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc: Make ppc_md.{halt, restart} __noreturn</title>
<updated>2016-07-14T11:12:06Z</updated>
<author>
<name>Daniel Axtens</name>
</author>
<published>2016-07-12T00:54:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=95ec77c06e8e63fff50c497eca0668bf6da39813'/>
<id>urn:sha1:95ec77c06e8e63fff50c497eca0668bf6da39813</id>
<content type='text'>
powernv marks it's halt and restart calls as __noreturn. However,
ppc_md does not have this annotation. Add the annotation to ppc_md,
and then to every halt/restart function that is missing it.

Additionally, I have verified that all of these functions do not
return. Occasionally I have added a spin loop to be sure.

Signed-off-by: Daniel Axtens &lt;dja@axtens.net&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc/pci: Delay populating pdn</title>
<updated>2016-06-21T05:30:56Z</updated>
<author>
<name>Gavin Shan</name>
</author>
<published>2016-05-20T06:41:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8cc7581cdb84a232468c41bc417183a423dfbb07'/>
<id>urn:sha1:8cc7581cdb84a232468c41bc417183a423dfbb07</id>
<content type='text'>
The pdn (struct pci_dn) instances are allocated from memblock or
bootmem when creating PCI controller (hoses) in setup_arch(). PCI
hotplug, which will be supported by proceeding patches, releases
PCI device nodes and their corresponding pdn on unplugging event.
The memory chunks for pdn instances allocated from memblock or
bootmem are hard to reused after being released.

This delays creating pdn by pci_devs_phb_init() from setup_arch()
to core_initcall() so that they are allocated from slab. The memory
consumed by pdn can be released to system without problem during
PCI unplugging time. It indicates that pci_dn is unavailable in
setup_arch() and the the fixup on pdn (like AGP's) can't be carried
out that time. We have to do that in pcibios_root_bridge_prepare()
on maple/pasemi/powermac platforms where/when the pdn is available.
pcibios_root_bridge_prepare is called from subsys_initcall() which
is executed after core_initcall() so the code flow does not change.

At the mean while, the EEH device is created when pdn is populated,
meaning pdn and EEH device have same life cycle. In turn, we needn't
call eeh_dev_init() to create EEH device explicitly.

Signed-off-by: Gavin Shan &lt;gwshan@linux.vnet.ibm.com&gt;
Reviewed-by: Alexey Kardashevskiy &lt;aik@ozlabs.ru&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc: Remove broken GregorianDay()</title>
<updated>2015-12-16T01:54:04Z</updated>
<author>
<name>Daniel Axtens</name>
</author>
<published>2015-12-15T07:09:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=00b912b0c88e690b1662067497182454357b18b0'/>
<id>urn:sha1:00b912b0c88e690b1662067497182454357b18b0</id>
<content type='text'>
GregorianDay() is supposed to calculate the day of the week
(tm-&gt;tm_wday) for a given day/month/year. In that calcuation it
indexed into an array called MonthOffset using tm-&gt;tm_mon-1. However
tm_mon is zero-based, not one-based, so this is off-by-one. It also
means that every January, GregoiranDay() will access element -1 of
the MonthOffset array.

It also doesn't appear to be a correct algorithm either: see in
contrast kernel/time/timeconv.c's time_to_tm function.

It's been broken forever, which suggests no-one in userland uses
this. It looks like no-one in the kernel uses tm-&gt;tm_wday either
(see e.g. drivers/rtc/rtc-ds1305.c:319).

tm-&gt;tm_wday is conventionally set to -1 when not available in
hardware so we can simply set it to -1 and drop the function.
(There are over a dozen other drivers in drivers/rtc that do
this.)

Found using UBSAN.

Cc: Andrey Ryabinin &lt;aryabinin@virtuozzo.com&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt; # as an example of what UBSan finds.
Cc: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Cc: Alexandre Belloni &lt;alexandre.belloni@free-electrons.com&gt;
Cc: rtc-linux@googlegroups.com
Signed-off-by: Daniel Axtens &lt;dja@axtens.net&gt;
Acked-by: Alexandre Belloni &lt;alexandre.belloni@free-electrons.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc: Kconfig: remove BE-only platforms from LE kernel build</title>
<updated>2015-09-29T12:57:00Z</updated>
<author>
<name>Boqun Feng</name>
</author>
<published>2015-09-06T23:58:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e5e16d8f3ec6973af2068897786be619cf97860e'/>
<id>urn:sha1:e5e16d8f3ec6973af2068897786be619cf97860e</id>
<content type='text'>
Currently, little endian is only supported on powernv and pseries,
however, Kconfigs still allow us to include other platforms in a LE
kernel, this may result in space wasting or even build error if some
BE-only platforms always assume they are built for a BE kernel. So just
modify the Kconfigs of BE-only platforms to remove them from being built
for a LE kernel.

For 32bit only platforms, nothing needs to be done, because
CPU_LITTLE_ENDIAN depends on PPC64. For 64bit supported platforms, add
CPU_BIG_ENDIAN to dependencies explicitly, so that these platforms will
be disabled for LE [Suggested-by: Cédric Le Goater &lt;clg@fr.ibm.com&gt;].

Signed-off-by: Boqun Feng &lt;boqun.feng@gmail.com&gt;
Acked-by: Geoff Levand &lt;geoff@infradead.org&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
</feed>
