The memory hotplug case involves calling to build_all_zonelists() which
in turns calls in to setup_zone_pageset(). The latter is marked
__meminit while build_all_zonelists() itself has no particular
annotation. build_all_zonelists() is only handed a non-NULL pointer in
the case of memory hotplug through an existing __meminit path, so the
setup_zone_pageset() reference is always safe.
The options as such are either to flag build_all_zonelists() as __ref (as
per __build_all_zonelists()), or to simply discard the __meminit
annotation from setup_zone_pageset().
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Acked-by: Mel Gorman <mel@csn.ul.ie>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Acked-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Now that everything that was using these interfaces has been converted to
the syscore ops, prevent new code from using the old API.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Now that the in-tree offenders have seemingly all caught up, we can
finally unconditionally select this.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This converts the PMB code over to use the new syscore_ops and kills off
the old sysdev utilization, as per Rafael's example.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
It's been a few kernel versions now without any unexpected surprises, so
tentatively bump up the support status.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Now that Documentation/devicetree/bindings/fb/ exists, make sure it's
also matched by the default framebuffer entry.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Now that there is a Documentation/devicetree hierarchy, and the driver in
question has no specific platform dependency, move the binding
information to a more appropriate place.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
A trivial conversion for the most part. EDOSK7760 is special, but uses a
non-power-of-2-aligned size, so just drop the SZ_xx helper and open-code
it for the sake of simplicity.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
TI folks seem to have a rather schizophrenic relationship with author
naming conventions, stub in mailmap entries to match with the sign-off
convention.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
For the SMP case we run in to a lockup without a full synchronization
prior to continuing with the boot.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This reworks some of the code a bit so that we always wrap in to the
global port array instead of flipping between it and the special early
device. This will make it easier to split the initialization in to early
and late parts where we can simply initialize the remaining bits of the
partially-initialized port coming off of the early console later in the
boot process.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
The earlyprintk path needs to establish the membase cookie, but is too
early for general resource management. Split out the remap logic
accordingly.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Presently the early console setup will be invoked for every device handed
off to he earlyprintk command line argument. In practice we can only
handle one, so this adds a sanity check to prevent clobbering the
existing active console.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
The break flag timer is presently added through add_timer() via the
interrupt and error paths, where it is possible to send multiple breaks
in rapid succession and trigger the timer pending BUG_ON(). This moves
over to a mod_timer() instead.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Presently much of the error handling paths are inlined, stemming from a
time when they were much smaller. This simply brings them out of line and
leaves it up to the compiler. Given that some of these now contain nested
loops, it's pretty hard to justify the inlining regardless of the
footprint.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
At the moment the request/release_port ops are no-ops with the port
remapping case tied in to the config_port op. This moves the remap logic
in to the request_port, balances it with unmapping in the port release,
and finally takes care of the mem region reservations.
All existing users are of the port autoconf variety, so we follow the
example of other drivers that wrap in to the port request by way of the
config op in the UART_CONFIG_TYPE case.
This is the first step towards fixing up conflicts with multiple users
of the same ports, as currently happens between sh-sci and spi_sh_sci.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
We were using an IS_ERR() check for the ioremap case, presumably because
this matched the old custom ioremap call that sh64 was providing. Now
that all ioremap() implementations trap the IS_ERR case and hand back a
NULL, check for that instead.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Presently there are only a few hardcoded cases using these definitions,
so kill off the unused ones completely. This will make it easier to
transition off of the remaining cases.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
In the olden days it was possible to register a map of ports per device,
but this has long since been abandoned due to the desire to match up with
clkdev and other functionality. As a result, all of the in-tree users
have for some time already been migrated off of such behaviour, while
we've left support code in place to deal with either case. Dropping the
code permits for quite a bit of simplification, so we do that now before
any users of the old interface are able to be added back in.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
There's nothing worth hiding under the ifdef in the platform DMA
definitions, and we certainly don't want board code adding this in to
their platform data definitions, so we always expose the slave rx/tx
and device pointer members instead.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Presently the port defs are lamely copied around between competing data
structures (one platform facing, the other driver internal). As we pretty
much require all of the data from the platform facing structure within
the driver too, simply nest the pointer directly and kill off the
duplication.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
All of the muxed IRQs presently populate the IRQ array verbosely, this
simply provides a trivial helper to do it for them.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
All users of the platform port data specify a mapbase where the driver
later derives the membase from. Now that UPF flags are taken in to
account for generic ioremapping we can kill off the port-specific membase
clobbering and simply use the generic paths.
This derives from a time when sh64 was not capable of using the generic
ioremap implementation and had employed early bolted DTLB mappings for
port access, which is no longer an issue.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
SH-X3 controllers all have pretty dire delays needed for PHY wakeup, so
we attempt to mitigate the damage by bringing them up asynchronously,
simply using the synchronization points for persistent bridge to channel
numbering.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
When using the I/O accessors in raw mode from the boot stubs we don't
want to bother with any of the complexity associated with readl/writel
and friends. Furthermore, utilization within the context of the host
driver itself is all performed on an ioremapped window, so using the
__raw variants there doesn't pose any problem either.
If and when barriers need to be added in the future, these will need to
be explicitly written out, but this is so far not a concern for any of
the affected CPUs in question.
This fixes up the link error introduced by the ARM tree via its barrier
refactoring:
arch/arm/boot/compressed/mmcif-sh7372.o: In function `mmcif_loader':
mmcif-sh7372.c:(.text+0x9e8): undefined reference to `outer_cache
Following the change in:
http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=6275/1
Reported-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
We require a forward declaration for mm_struct:
In file included from arch/sh/include/asm/pgtable.h:163,
from arch/sh/include/asm/io.h:21,
from arch/sh/kernel/machvec.c:20:
include/asm-generic/pgtable.h:104: error: 'struct mm_struct' declared inside parameter list
include/asm-generic/pgtable.h: In function 'ptep_get_and_clear_full':
include/asm-generic/pgtable.h:107: error: passing argument 1 of 'ptep_get_and_clear' from incompatible pointer type
include/asm-generic/pgtable.h:70: note: expected 'struct mm_struct *' but argument is of type 'struct mm_struct *'
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This fixes up the port_rx_irq_mask() REIE flag definition as well as a
debug printk blowing up on the SCSCR_INIT having gone away.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
When p3_ioremap() was converted to ioremap_prot() there was some breakage
introduced where the 29-bit segmentation logic would trap the area range
and return an identity mapping without having allowed the area
specification to force mapping through page tables. This wires up a PCC
mask for pgprot verification to work out whether to short-circuit the
identity mapping on legacy parts, restoring the previous behaviour.
Reported-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Cc: stable@kernel.org
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Presently it's still possible to reference the PAGE_KERNEL_PCC pgprot
encoding on X2 TLBs which simply don't support it at all. Convert this
over to follow the nommu behaviour and simply hand back an invalid pgprot
value so we error out properly.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
prefetch()/prefetchw() are supposed to take a const void * instead of a
straight void *, which the build recently started complaining about, fix
them up.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Now that all of the in-tree drivers have been converted to portable I/O
accessors, we can kill off the legacy ones with extreme prejudice.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
CC arch/sh/boards/mach-sdk7786/setup.o
arch/sh/boards/mach-sdk7786/setup.c:179: error: variable 'sdk7786_pcie_cl' has initializer but incomplete type
arch/sh/boards/mach-sdk7786/setup.c:180: error: unknown field 'con_id' specified in initializer
arch/sh/boards/mach-sdk7786/setup.c:180: warning: excess elements in struct initializer
arch/sh/boards/mach-sdk7786/setup.c:180: warning: (near initialization for 'sdk7786_pcie_cl')
arch/sh/boards/mach-sdk7786/setup.c:181: error: unknown field 'clk' specified in initializer
arch/sh/boards/mach-sdk7786/setup.c:181: warning: excess elements in struct initializer
arch/sh/boards/mach-sdk7786/setup.c:181: warning: (near initialization for 'sdk7786_pcie_cl')
arch/sh/boards/mach-sdk7786/setup.c: In function 'sdk7786_clk_init':
arch/sh/boards/mach-sdk7786/setup.c:211: error: implicit declaration of function 'clkdev_add'
which is a fanciful way of saying that the struct definition moved from
asm/clkdev.h to linux/clkdev.h.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This kills off all of the dl_xxx() printk wrappers and simply stubs in a
pr_fmt() definition to accomplish the same thing.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
udlfb selects all of the options it presently ifdef conditionalizes, so
none of the statements have any effect outside of aggravating eye strain.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Presently the root node is initialized by way of kzalloc on the parent
data structure, which by chance happens to do the bulk of what an
explicit initialization does with GFP_NOWAIT semantics. This however is
more by luck than by design, and as we ideally want to permit radix node
allocations access to the emergency pools anyways, add in the proper
initializer with the desired mask.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
The current implementation was rather tied to the packed_struct.h
definitions, which immediately began to clash when the packed_struct.h
types changed and drivers began to include packed_struct.h directly.
In order to support this sort of use it's necessary to get out of the way
with regards to namespace collisions, and at the same time we can also
kill off some duplicate code now that the unaligned headers are a bit
more broken out.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
The master clock initialization for SH7201 was wholly bogus. Users of the
legacy API must initialize the clock rate through the struct clk itself
rather than returning the clock frequency. Given that the init function
itself is void, returning the frequency isn't terribly effective.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Now that these have been introduced in to the vmalloc API, sync up the
nommu side of things. At present we don't deal with VMAs as such, so for
the time being these will simply BUG() out. In the future it should be
possible to support this interface by layering on top of the vm_regions.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
With some recent tidying of duplicate register definitions the se7206 IRQ
code broke:
arch/sh/boards/mach-se/7206/irq.c: error: 'INTC_ICR' undeclared (first use in this function)
arch/sh/boards/mach-se/7206/irq.c: error: (Each undeclared identifier is reported only once
arch/sh/boards/mach-se/7206/irq.c: error: for each function it appears in.)
Fix it up.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Some of the SH4-202 code was overlooked in the set_rate() API conversion,
resulting in:
arch/sh/kernel/cpu/sh4/clock-sh4-202.c: error: too many arguments to function 'clk->ops->set_rate'
Fix it up.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Presently DMA transfers are interrupted and aborted by the NMI. This
implements some basic logic for more gracefully handling and clearing
each controller's NMIF flag via the NMI die chain, needed to resume
transfers post-NMI.
Reported-by: Michael Szafranek <Michael.Szafranek@emtrion.de>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
The on-board NMI switch is routed through and mangled by the FPGA prior
to its delivery to the NMI pin, so add some glue for the various
configuration options. The default is to unmask it and enable all input
sources.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
* 'for-paul-rc' of git://gitorious.org/linux-omap-dss2/linux:
OMAP: OMAPFB: disable old omapfb for OMAP4 builds
OMAP: DSS: VRAM: Align start & size of vram to 2M
There are still quite a number of MFD and GPIO expander drivers that are
using the old irq_chip APIs that haven't had a chance to update during
the .37 cycle, resulting in allyes/modconfig errors on some
configurations.
Mark Brown has done most of the legwork to get these fixed up in .38,
so this should just be a .37 stop-gap that we can drop at the end of the
.38 merge window.
Reported-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This switches over to selects for the subtypes to enable OHCI/EHCI
support explicitly rather than littering the usb Kconfig with subtype
dependencies.
Suggested-by: David Daney <ddaney@caviumnetworks.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This follows the ARM change c01778001a
("ARM: 6379/1: Assume new page cache pages have dirty D-cache") for the
same rationale:
There are places in Linux where writes to newly allocated page
cache pages happen without a subsequent call to flush_dcache_page()
(several PIO drivers including USB HCD). This patch changes the
meaning of PG_arch_1 to be PG_dcache_clean and always flush the
D-cache for a newly mapped page in update_mmu_cache().
This addresses issues seen with executing binaries from MMC, in
addition to some of the other HCDs that don't explicitly do cache
management for their pipe-in buffers.
Requested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Several of the EHCI glue drivers either predate or were merged in the
same timeframe as API changes at the USB core level, resulting in some
missing endpoint_reset and clear_tt_buffer_complete callbacks.
This fixes up all of ehci-atmel, mxc, w90x900, and xilinx-of to tie in
the new helpers, which brings them in line with everyone else.
Reported-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>