Remove unneeded error handling on the result of a call to
platform_get_resource when the value is passed to devm_ioremap_resource.
A simplified version of the semantic patch that makes this change is as
follows: (http://coccinelle.lip6.fr/)
// <smpl>
@@
expression pdev,res,n,e,e1;
expression ret != 0;
identifier l;
@@
- res = platform_get_resource(pdev, IORESOURCE_MEM, n);
... when != res
- if (res == NULL) { ... \(goto l;\|return ret;\) }
... when != res
+ res = platform_get_resource(pdev, IORESOURCE_MEM, n);
e = devm_ioremap_resource(e1, res);
// </smpl>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This file contains the API for the target "HMARK", hence it should be exported
to userland.
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This file contains the API for the match "rpfilter", hence it should be exported
to userland.
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
The PXA DMA controller has a DALGN register which allows for
byte-aligned DMA transfers. Use it in case any of the transfer
descriptors is not aligned to a mask of ~0x7.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
The DMA_SLAVE is currently set twice.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This patch makes the mmp_pdma controller able to provide DMA resources
in DT environments by providing an dma xlate function.
of_dma_simple_xlate() isn't used here, because if fails to handle
multiple different DMA engines or several instances of the same
controller. Instead, a private implementation is provided that makes use
of the newly introduced dma_get_slave_channel() call.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
PXA peripherals need to obtain specific DMA request ids which will
eventually be stored in the DRCMR register.
Currently, clients are expected to store that number inside the slave
config block as slave_id, which is unfortunately incompatible with the
way DMA resources are handled in DT environments.
This patch adds a filter function which stores the filter parameter
passed in by of-dma.c into the channel's drcmr register.
For backward compatability, cfg->slave_id is still used if set to
a non-zero value.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
There's no reason for limiting the maximum transfer length to 0x1000.
Take the actual bit mask instead; the PDMA is able to transfer chunks of
up to SZ_8K - 1.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
As suggested by Ezequiel García, release the spinlock at the end of the
function only, and use a goto for the control flow.
Just a minor cleanup.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
The exact same calculation is done twice, so let's factor it out to a
macro.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
* Fix compiler warning in armadillo800eva board code
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iQIcBAABAgAGBQJR+hlKAAoJENfPZGlqN0++ZqIP/ROWsUVzS35U3MhMdYps4fh0
9Vq8qwqnGVRK8UVBtf1XmETn7RSzowm0uLFDN0Rgxgo3E4ZgDAk5ux0yBrz5q9v9
sYrwuODr3SLSvoHTt3+Bt0C30+CYdA+Lxue4ToMOuP/hvPa6E680ZmwYoP/q+/bR
aU9i4ToAF9+fXUIkLEl9s/wI9Lkt4davioy/HWayLJ/2Fgn8xzWIgSQ/BADaMyRv
Ds6OmgxG1ibOcdT9RRXHSKxYkwm8obERNZHgIWPd+XDwmvF915gWTQ2XQgDhyjvn
VNq1aNYcPeqnjMN/EZZ/X+CMNwAVxmCE8ijXVkMrp8XnH7D+J/vO5rHhVuJfRtIE
NP+mi3VOCw2YQsXabCuK3bK2r2P42Pnm9gjW1iCVQAnmc7b+kAHyufVs7M6ezlKm
aFXNOcx2S3ZgnJbjzVAGayia0datDQOgEqA0zqCeZaaK05Gz/wNB/97zq4mF1ERh
YF7bAtgiJ3FHIuEEfzBexBWx20m2Xh09MwI8t6L58RHR5htuRBhbQ0ukwtgK8kSW
pq0XPQXHY9EKEdQKBLNaHFDH0GdgFUrfZdpiWNRK9O7sI08iNYEFskSTrbWKyRLW
Izafj1nPvX3v9L9hIJoxljnPkxr1lFs6pJ6NplUosmssyhrQfcGWxyn8nKWH0ram
SubsL+kwysscqIxEvgpq
=SW+C
-----END PGP SIGNATURE-----
Merge tag 'renesas-fixes2-for-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/fixes-non-critical
From Simon Horman:
Second Round of Renesas ARM based SoC fixes for v3.12
* Fix compiler warning in armadillo800eva board code
* tag 'renesas-fixes2-for-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
ARM: shmobile: armadillo800eva-reference: fix compiler warning
Signed-off-by: Olof Johansson <olof@lixom.net>
This adds a device tree usable on Mele A1000 (and A2000, as it
apparently is the same device except for the case). This device features
one UART port, Ethernet, an AXP209 PMU on i2c0 and two user configurable
LEDs.
Signed-off-by: Emilio López <emilio@elopez.com.ar>
[maxime: fixed the soc node address]
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Move Renesas ARM based SoCs a little closer to using
multiplatform by adding ARCH_SHMOBILE_MULTI and only
building clocks when COMMON_CLK=n.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iQIcBAABAgAGBQJR90vlAAoJENfPZGlqN0++Q3MQAImhPlPcqU4PoMyUQSAG/hj1
V7pwYjKLTLxGi4WGyqLnFrSvNUKhKLDUa0kv6iiccOuppc3xU6XDKMyQt2b8F3UN
Xod1oX74hQasX6dMUuAbuVFX+vfIms81Pk76Jx0nVRIEzuBSgl+JPP0A3VdDXpHo
zUVBH788juW3j6Uihm6dQSoIfSAnRGR2j/04qrMXlJ4WycYPya205I3HIDPOe7kj
TMOU3jBzB9051LyggDrDXjUEvtqJDvOJ32KeFHXnCiSLitbi1MEFPxkl5ldDYAEt
4CmrZanTfWpR9pCVwN4PLKs6BXAn/YOD55vFeB92gCT3/cCG/HYeyrW2JsmMbrhm
BaxRPFGdYsfVOj9+waqZMsvmvi9NluuxJ5Pne/ENxn6Yn0IlXF4pfcYzWLoNa55u
3r5EQumfPkfdCn3J1XIkbYMXhBMbQnUHbCqrk6PD2ovlsJwYvbiVkunsJohOsKcG
ARKhGoBJ0QCp9MU9wLjGKyVtJKvejCZdpN8E8gavGcFRJJpT7GwElp6wp4brhqIs
xUC/8GAZAk7U45K1DRU7ZX+87muKRQ0lR0brYaQmH/KvfT4bPINFx3G9yIwICG7h
tDZjMGQXYFTNpbaAbSoSggE1ZaowzLo9RaHBBbFfRuES8ik6nx2ev9smKrSupq4s
lWz7rgsy5be8pX4DRibR
=QD0i
-----END PGP SIGNATURE-----
Merge tag 'renesas-multiplatform-for-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/dt
From Simon Horman:
Renesas ARM based SoC multiplatform updates for v3.12
Move Renesas ARM based SoCs a little closer to using
multiplatform by adding ARCH_SHMOBILE_MULTI and only
building clocks when COMMON_CLK=n.
* tag 'renesas-multiplatform-for-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
ARM: shmobile: Allow ARCH_SHMOBILE_MULTI timer configuration
ARM: shmobile: Add EMEV2 and KZM9D to ARCH_SHMOBILE_MULTI
ARM: shmobile: Introduce ARCH_SHMOBILE_MULTI
ARM: shmobile: Only build clocks when COMMON_CLK=n
Signed-off-by: Olof Johansson <olof@lixom.net>
Add Renesas TPU PWM unit support
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iQIcBAABAgAGBQJR7xykAAoJENfPZGlqN0++AzsP/jVu+QI3nK/mOpmabdMJpqDh
I8zhGiXHt11vY8RTt0zawQJ8VapUXA/jX1g+4lmxpXpZJYr5f1n0IUvtI73OjbNF
17icq1H/TGhgu99etA/QlC94FRcoeNPX93fBM7e0givZaF9wJ0LLpRwpnPMmBgyZ
FzvKTtHQbHSeXYdzgRtMmtgni3RKN/YIl1tqFfpkeIQCxJZC7SAkwbMEm/SYE93p
BxsT9kSUiSUUsT8EAygTm7XmbLpLbMJ6BYEq230uy3comkWTcB+ax6jETXPFkeTG
q/s5Qp+JvPtft4wS580wepZriRlgVrQH2fveNYDsBtCLDrxrrPZMknJyByQkjskb
6fq3jBCVHKuReh3Vhwq+9cvhaDJ5Sr41tzPnE9gKbc6qkaW4QDrDKbWXnQWHolun
UzvII9Wc53h3bhdmeHhujC38GgNTIuDZyPNazRKeCY/L0Yrcb5JwXFj+h9rjryAg
sqHjoS3srGUobysRzD1syNi4Z6ft5hxxn6Vwn/MqT4HwnWyXHM/GWgVAv5msRXQ8
MoAYZNDnR4A0sDiulkZUXN4HeqOVBD2WVWRKvycElwOQSDbZuDrjBpOdsETIwNg9
JiNwuB9KhSNGu6IQ/S0IIYd9m0uzqR96vXFmvkyqII/qEVv4Pp1TS/gN74K5vtvi
hmJo1Qb9oVQnov27mfSm
=dAIB
-----END PGP SIGNATURE-----
Merge tag 'renesas-tpu-pwm-for-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/boards
From Simon Horman:
Renesas TPU PWM support for v3.12
Add Renesas TPU PWM unit support
* tag 'renesas-tpu-pwm-for-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
leds: Remove leds-renesas-tpu driver
ARM: shmobile: sh73a0: Remove all GPIOs
ARM: shmobile: kota2: Use leds-pwm + pwm-rmob
ARM: shmobile: armadillo800eva: Add backlight support
Signed-off-by: Olof Johansson <olof@lixom.net>
Add clocks to clock lookup table for uart DT entries.
Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
Tested-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
SH Mobile pinctrl DT support
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iQIcBAABAgAGBQJR7x2SAAoJENfPZGlqN0++TSMQAK8jwFDHgLwTgqVzBy59OwK4
w9Ou1Jj2Fu6tRaOKjATDc/lrt/kAqifhBLvUX5VFccxa5TLBc8w/KVsrOvi3aN0Q
ns447EsCmMqfVF1EwYFxro9mYpvwPB92+IsABdN3lWSZyqVrSCy8hs/4q3ozDqu5
4rfhFRWWzOJ3G5D+U7ZCbKsgSud6IB3eicYbBHVvrF3AJwgddCneN61q5WKTpiae
ah3EIPO1RtprdSCq9MtIliX0PFALtcKfGTz7dcPCdUy5H0wZf5X8/NvMlYiqnf4X
0BTAlsR14R1vCZF04oSMQPlwI1YfuvX/QrlESQuI/vD4FwU32SFC44iYJtpKS6s2
sSfEeU66gGQyTpbX4OkwHX1ws68d0gsOB0lXb01i6kZnavFUrMOLLWmFxBmgnFSU
/PCA7YiFdGjiTduVwpFmPI5l+1m7solHSLiw7iMN5dBlGIruEseSPQl9ovC7cGUc
bZU2VxHe/Xxyg9O6WWjsV8XVC05V+r79L0/bPdxIFzi1W4mjK0dqyya243TyJRKD
20TAdmlmkW+J/gpaJpISKftn0mcE1/DEkz0XpzYWc/WgYEOnD3gtad80ZB+dzq1W
BblYm1dEON/qjNYW6KYXYyYgttR/QkZVSVWm08LPypxjGvihB+Sxwhrb3ivK/CtI
IKBiqj17072aIseJbtFq
=PwyZ
-----END PGP SIGNATURE-----
Merge tag 'renesas-pinmux-for-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/dt
From Simon Horman:
Renesas ARM based SoC pinmux updates for v3.12
SH Mobile pinctrl DT support
* tag 'renesas-pinmux-for-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
ARM: shmobile: kzm9g-reference: Add LED1-LED4 to the device tree
ARM: shmobile: kzm9g-reference: Move SDHI regulators to DT
ARM: shmobile: kzm9g-reference: Move pinctrl mappings to device tree
ARM: shmobile: marzen-reference: Add LED2-LED4 to the device tree
ARM: shmobile: marzen-reference: Move pinctrl mappings to device tree
ARM: shmobile: armadillo-reference: Add LED1-LED4 to the device tree
ARM: shmobile: armadillo-reference: Move st1232 reset GPIO to DT
ARM: shmobile: armadillo-reference: Add st1232 pin mappings
ARM: shmobile: armadillo-reference: Move pinctrl mappings to device tree
ARM: shmobile: sh73a0: Add pin control device to device tree
ARM: shmobile: sh7372: Add pin control device to device tree
ARM: shmobile: r8a7790: Add GPIO controller devices to device tree
ARM: shmobile: r8a7790: Add pin control device to device tree
ARM: shmobile: r8a7779: Add GPIO controller devices to device tree
ARM: shmobile: r8a7779: Add pin control device to device tree
ARM: shmobile: r8a7778: Add GPIO controller devices to device tree
ARM: shmobile: r8a7778: Add pin control device to device tree
ARM: shmobile: r8a7740: Add pin control device to device tree
ARM: shmobile: r8a73a4: Add pin control device to device tree
Signed-off-by: Olof Johansson <olof@lixom.net>
Conflicts:
arch/arm/boot/dts/r8a73a4.dtsi
arch/arm/boot/dts/r8a7790.dtsi
series involve following modifications:
1) fixing up few things in samsung_pwm_timer clocksource driver,
2) moving remaining Samsung platforms to the new clocksource driver,
3) removing old clocksource driver,
4) adding new multiplatform- and DT-aware PWM driver,
5) moving all Samsung platforms to use the new PWM driver,
6) removing old PWM driver,
7) removing all PWM-related code that is not used anymore.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.20 (GNU/Linux)
iQIcBAABAgAGBQJSCT7XAAoJEIv3Hb8G/Xru/rcP/012END3oSxl+G1C0akZ+1Ko
uZZXib9c1g7TzsE2lR1YRyZvKIylMEiETEupIf0gnliulSfQFKYN+0FMbqVfdYXZ
fKYRA6rJV/b+lu6cY6E0Q12uXH1Cbrgk5Puqx09AXiR142E2DgCpt0A0aagYDff3
P5nNxs1TcBTWcRdFgE5YytkdNtd9W5V87FEzctj4ENByXtayadcFPLjucmgfyrPo
m763wmkoo6drnOnmpg+38yRKPm725tVami2Z0XN6FeFC7BYXa6VfqBdSkuhx8KDQ
BbO2BUQeaLhpNM1LICfhD0w9VTXhPBLP1GA3qnNa9JCw+vO6dQEPwzMG9+gSKdqa
jeFM9Vz11bqWfo5scI/5/tUxx2WOSqG3mq3LfMFKjRW6UCrUkVBYvBQCKHK6BF22
Bnh5o5wpZDEHUJqjgdUeY+hjU6vhGTxa7VERZ1vBDn5h1EyLGq7YzLdEFdhaxRAk
TShtoNXi7gD9JhoJkR5I4el5+I05sCdDS4NNNfoYTb2b/zxTpGzy+lZpBk3HuE+A
fbe5zJVL4wsU88Li2vQ2oIUXOW2TIJDXAC1zV7N9GuIrDPxSPIoDcaFX68Ydfxy1
h7jzXCxTgJdVXQV4An8aviQ4CIOtKkiWFoFlArS2CrroHhHYwhQznlwHQ1R7YTI1
3ICxJdK4uPfQ1HQZQcxR
=xmmW
-----END PGP SIGNATURE-----
Merge tag 'v3.12-pwm-cleanup-for-olof' of git://github.com/tom3q/linux into next/cleanup
From Tomasz Figa:
Here is the Samsung PWM cleanup series. Particular patches of the series
involve following modifications:
- fixing up few things in samsung_pwm_timer clocksource driver,
- moving remaining Samsung platforms to the new clocksource driver,
- removing old clocksource driver,
- adding new multiplatform- and DT-aware PWM driver,
- moving all Samsung platforms to use the new PWM driver,
- removing old PWM driver,
- removing all PWM-related code that is not used anymore.
* tag 'v3.12-pwm-cleanup-for-olof' of git://github.com/tom3q/linux: (684 commits)
ARM: SAMSUNG: Remove plat/regs-timer.h header
ARM: SAMSUNG: Remove remaining uses of plat/regs-timer.h header
ARM: SAMSUNG: Remove pwm-clock infrastructure
ARM: SAMSUNG: Remove old PWM timer platform devices
pwm: Remove superseded pwm-samsung-legacy driver
ARM: SAMSUNG: Modify board files to use new PWM platform device
ARM: SAMSUNG: Rework private data handling in dev-backlight
pwm: Add new pwm-samsung driver
pwm: samsung: Rename to pwm-samsung-legacy
ARM: SAMSUNG: Remove unused PWM timer IRQ chip code
ARM: SAMSUNG: Remove old samsung-time driver
ARM: SAMSUNG: Move all platforms to new clocksource driver
ARM: SAMSUNG: Set PWM platform data
ARM: SAMSUNG: Add new PWM platform device
ARM: SAMSUNG: Unify base address definitions of timer block
clocksource: samsung_pwm_timer: Handle suspend/resume correctly
clocksource: samsung_pwm_timer: Do not use clocksource_mmio
clocksource: samsung_pwm_timer: Cache clocksource register address
clocksource: samsung_pwm_timer: Correct definition of AUTORELOAD bit
clocksource: samsung_pwm_timer: Do not request PWM mem region
+ v3.11-rc4
Conflicts:
arch/arm/Kconfig.debug
Signed-off-by: Olof Johansson <olof@lixom.net>
Type SETUP_PCI, added by setup_efi_pci(), may advertise a ROM size
larger than early_memremap() is able to handle, which is currently
limited to 256kB. If this occurs it leads to a NULL dereference in
parse_setup_data().
To avoid this, remap the setup_data header and allow parsing functions
for individual types to handle their own data remapping.
Signed-off-by: Linn Crosetto <linn@hp.com>
Link: http://lkml.kernel.org/r/1376430401-67445-1-git-send-email-linn@hp.com
Acked-by: Yinghai Lu <yinghai@kernel.org>
Reviewed-by: Pekka Enberg <penberg@kernel.org>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
The keyboard driver for the CLPS711X platform is missing, so there
is no need to call iotable_init() for this memory region.
Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Olof Johansson <olof@lixom.net>
This patch removes incorrect config symbols checking since these
symbols not contain "CONFIG_" prefix. Anyway, checking is unneeded
here and this patch remove it completely.
Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Olof Johansson <olof@lixom.net>
This patch removes support for the fortunet board.
This board is not maintained by long time and it seems
no one is not using it.
Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Olof Johansson <olof@lixom.net>
This is a partial revert of the patch:
"6597619f9c ARM: clps711x: Add support for SYSCON driver".
No reason to make SYSCON driver name unique to that processor.
Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Olof Johansson <olof@lixom.net>
Our ppc64 spinlocks and rwlocks use a trick where a lock token and
the paca index are placed in the lock with a single store. Since we
are using two u16s they need adjusting for little endian.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
We need to set ELF_DATA correctly on LE coredumps.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Add little endian support for demuxing SMP IPIs
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Alistair noticed we got a SIGILL on userspace mfpvr instructions.
Remove the little endian check in the emulation code, it is
probably there to protect against the old pseudo little endian
implementations but doesn't make sense for real little endian.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
The lppaca, slb_shadow and dtl_entry hypervisor structures are
big endian, so we have to byte swap them in little endian builds.
LE KVM hosts will also need to be fixed but for now add an #error
to remind us.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Add endian annotation to various hypervisor structures which
are defined as big endian.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
The device tree is big endian so make sure we byteswap on little
endian. We assume any pHyp calls also return big endian results in
memory.
Signed-off-by: Alistair Popple <alistair@popple.id.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
We pass dma_window to of_parse_dma_window as a void * and then
run through hoops to cast it back to a u32 array. In the process
we lose endian annotation.
Simplify it by just passing a __be32 * down.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>