Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: [POWERPC] Fix zImage.coff generation for 32-bit pmac [POWERPC] Fix compile breakage for IBM/AMCC 4xx arch/ppc platforms [POWERPC] Don't allow PMAC_APM_EMU for 64-bit [POWERPC] Compare irq numbers with NO_IRQ not IRQ_NONE [POWERPC] Fix return from pte_alloc_one() in out-of-memory case [POWERPC] Fix compile warning in pseries xics code [POWERPC] Don't use HOSTCFLAGS in BOOTCFLAGS [POWERPC] Create a zImage for legacy iSeries [POWERPC] pasemi idle uses hard_smp_processor_id [POWERPC] ps3/interrupt.c uses get_hard_smp_processor_id [POWERPC] Fix possible access to free pages [POWERPC] Fix compiler/assembler flags for Ebony platform boot files [POWERPC] Fix ppc32 single-stepping out of syscalls [POWERPC] Update documentation for of_find_node_by_type()
This commit is contained in:
commit
20c4856b1d
|
@ -142,7 +142,6 @@ drivers-$(CONFIG_OPROFILE) += arch/powerpc/oprofile/
|
|||
|
||||
# Default to zImage, override when needed
|
||||
defaultimage-y := zImage
|
||||
defaultimage-$(CONFIG_PPC_ISERIES) := vmlinux
|
||||
defaultimage-$(CONFIG_DEFAULT_UIMAGE) := uImage
|
||||
KBUILD_IMAGE := $(defaultimage-y)
|
||||
all: $(KBUILD_IMAGE)
|
||||
|
|
|
@ -11,20 +11,18 @@
|
|||
# bootloader and increase compatibility with OpenFirmware.
|
||||
#
|
||||
# To this end we need to define BOOTCC, etc, as the tools
|
||||
# needed to build the 32 bit image. These are normally HOSTCC,
|
||||
# but may be a third compiler if, for example, you are cross
|
||||
# compiling from an intel box. Once the 64bit ppc gcc is
|
||||
# stable it will probably simply be a compiler switch to
|
||||
# compile for 32bit mode.
|
||||
# needed to build the 32 bit image. That's normally the same
|
||||
# compiler for the rest of the kernel, with the -m32 flag added.
|
||||
# To make it easier to setup a cross compiler,
|
||||
# CROSS32_COMPILE is setup as a prefix just like CROSS_COMPILE
|
||||
# in the toplevel makefile.
|
||||
|
||||
all: $(obj)/zImage
|
||||
|
||||
HOSTCC := gcc
|
||||
BOOTCFLAGS := $(HOSTCFLAGS) -fno-builtin -nostdinc -isystem \
|
||||
$(shell $(CROSS32CC) -print-file-name=include) -fPIC
|
||||
BOOTCFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
|
||||
-fno-strict-aliasing -Os -msoft-float -pipe \
|
||||
-fomit-frame-pointer -fno-builtin -fPIC -nostdinc \
|
||||
-isystem $(shell $(CROSS32CC) -print-file-name=include)
|
||||
BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
|
||||
|
||||
ifeq ($(call cc-option-yn, -fstack-protector),y)
|
||||
|
@ -33,8 +31,8 @@ endif
|
|||
|
||||
BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj)
|
||||
|
||||
$(obj)/44x.o: BOOTCFLAGS += -Wa,-mbooke
|
||||
$(obj)/ebony.o: BOOTCFLAGS += -Wa,-mbooke
|
||||
$(obj)/44x.o: BOOTCFLAGS += -mcpu=440
|
||||
$(obj)/ebony.o: BOOTCFLAGS += -mcpu=440
|
||||
|
||||
zlib := inffast.c inflate.c inftrees.c
|
||||
zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h
|
||||
|
@ -136,6 +134,7 @@ image-$(CONFIG_PPC_EFIKA) += zImage.chrp
|
|||
image-$(CONFIG_PPC_PMAC) += zImage.pmac
|
||||
image-$(CONFIG_PPC_HOLLY) += zImage.holly-elf
|
||||
image-$(CONFIG_PPC_PRPMC2800) += zImage.prpmc2800
|
||||
image-$(CONFIG_PPC_ISERIES) += zImage.iseries
|
||||
image-$(CONFIG_DEFAULT_UIMAGE) += uImage
|
||||
|
||||
ifneq ($(CONFIG_DEVICE_TREE),"")
|
||||
|
@ -185,6 +184,9 @@ $(obj)/zImage.initrd.%: vmlinux $(wrapperbits)
|
|||
$(obj)/zImage.%: vmlinux $(wrapperbits)
|
||||
$(call if_changed,wrap,$*)
|
||||
|
||||
$(obj)/zImage.iseries: vmlinux
|
||||
$(STRIP) -s -R .comment $< -o $@
|
||||
|
||||
$(obj)/zImage.ps3: vmlinux
|
||||
$(STRIP) -s -R .comment $< -o $@
|
||||
|
||||
|
|
|
@ -129,7 +129,7 @@ case "$platform" in
|
|||
pmac|pseries|chrp)
|
||||
platformo=$object/of.o
|
||||
;;
|
||||
pmaccoff)
|
||||
coff)
|
||||
platformo=$object/of.o
|
||||
lds=$object/zImage.coff.lds
|
||||
;;
|
||||
|
@ -220,7 +220,7 @@ case "$platform" in
|
|||
pseries|chrp)
|
||||
$object/addnote "$ofile"
|
||||
;;
|
||||
pmaccoff)
|
||||
coff)
|
||||
${CROSS}objcopy -O aixcoff-rs6000 --set-start "$entry" "$ofile"
|
||||
$object/hack-coff "$ofile"
|
||||
;;
|
||||
|
|
|
@ -489,7 +489,7 @@ struct irq_host *irq_alloc_host(unsigned int revmap_type,
|
|||
case IRQ_HOST_MAP_LINEAR:
|
||||
rmap = (unsigned int *)(host + 1);
|
||||
for (i = 0; i < revmap_arg; i++)
|
||||
rmap[i] = IRQ_NONE;
|
||||
rmap[i] = NO_IRQ;
|
||||
host->revmap_data.linear.size = revmap_arg;
|
||||
smp_wmb();
|
||||
host->revmap_data.linear.revmap = rmap;
|
||||
|
@ -614,7 +614,7 @@ unsigned int irq_create_mapping(struct irq_host *host,
|
|||
* host->ops->map() to update the flags
|
||||
*/
|
||||
virq = irq_find_mapping(host, hwirq);
|
||||
if (virq != IRQ_NONE) {
|
||||
if (virq != NO_IRQ) {
|
||||
if (host->ops->remap)
|
||||
host->ops->remap(host, virq, hwirq);
|
||||
pr_debug("irq: -> existing mapping on virq %d\n", virq);
|
||||
|
@ -741,7 +741,7 @@ void irq_dispose_mapping(unsigned int virq)
|
|||
switch(host->revmap_type) {
|
||||
case IRQ_HOST_MAP_LINEAR:
|
||||
if (hwirq < host->revmap_data.linear.size)
|
||||
host->revmap_data.linear.revmap[hwirq] = IRQ_NONE;
|
||||
host->revmap_data.linear.revmap[hwirq] = NO_IRQ;
|
||||
break;
|
||||
case IRQ_HOST_MAP_TREE:
|
||||
/* Check if radix tree allocated yet */
|
||||
|
|
|
@ -1171,11 +1171,12 @@ EXPORT_SYMBOL(of_find_node_by_name);
|
|||
|
||||
/**
|
||||
* of_find_node_by_type - Find a node by its "device_type" property
|
||||
* @from: The node to start searching from or NULL, the node
|
||||
* you pass will not be searched, only the next one
|
||||
* will; typically, you pass what the previous call
|
||||
* returned. of_node_put() will be called on it
|
||||
* @name: The type string to match against
|
||||
* @from: The node to start searching from, or NULL to start searching
|
||||
* the entire device tree. The node you pass will not be
|
||||
* searched, only the next one will; typically, you pass
|
||||
* what the previous call returned. of_node_put() will be
|
||||
* called on from for you.
|
||||
* @type: The type string to match against
|
||||
*
|
||||
* Returns a node pointer with refcount incremented, use
|
||||
* of_node_put() on it when done.
|
||||
|
|
|
@ -218,6 +218,7 @@ set_single_step(struct task_struct *task)
|
|||
regs->msr |= MSR_SE;
|
||||
#endif
|
||||
}
|
||||
set_tsk_thread_flag(task, TIF_SINGLESTEP);
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
@ -233,6 +234,7 @@ clear_single_step(struct task_struct *task)
|
|||
regs->msr &= ~MSR_SE;
|
||||
#endif
|
||||
}
|
||||
clear_tsk_thread_flag(task, TIF_SINGLESTEP);
|
||||
}
|
||||
#endif /* CONFIG_PPC32 */
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/reg.h>
|
||||
#include <asm/smp.h>
|
||||
|
||||
#include "pasemi.h"
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <asm/machdep.h>
|
||||
#include <asm/udbg.h>
|
||||
#include <asm/lv1call.h>
|
||||
#include <asm/smp.h>
|
||||
|
||||
#include "platform.h"
|
||||
|
||||
|
|
|
@ -752,6 +752,7 @@ skip_gserver_check:
|
|||
void xics_request_IPIs(void)
|
||||
{
|
||||
unsigned int ipi;
|
||||
int rc;
|
||||
|
||||
ipi = irq_create_mapping(xics_host, XICS_IPI);
|
||||
BUG_ON(ipi == NO_IRQ);
|
||||
|
@ -762,11 +763,12 @@ void xics_request_IPIs(void)
|
|||
*/
|
||||
set_irq_handler(ipi, handle_percpu_irq);
|
||||
if (firmware_has_feature(FW_FEATURE_LPAR))
|
||||
request_irq(ipi, xics_ipi_action_lpar, IRQF_DISABLED,
|
||||
"IPI", NULL);
|
||||
rc = request_irq(ipi, xics_ipi_action_lpar, IRQF_DISABLED,
|
||||
"IPI", NULL);
|
||||
else
|
||||
request_irq(ipi, xics_ipi_action_direct, IRQF_DISABLED,
|
||||
"IPI", NULL);
|
||||
rc = request_irq(ipi, xics_ipi_action_direct, IRQF_DISABLED,
|
||||
"IPI", NULL);
|
||||
BUG_ON(rc);
|
||||
}
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include <linux/module.h>
|
||||
#include <asm/ibm4xx.h>
|
||||
#include <asm/ocp.h>
|
||||
|
||||
struct ocp_sys_info_data ocp_sys_info = {
|
||||
|
|
|
@ -114,7 +114,7 @@ config PMAC_SMU
|
|||
config PMAC_APM_EMU
|
||||
tristate "APM emulation"
|
||||
select APM_EMULATION
|
||||
depends on ADB_PMU && PM
|
||||
depends on ADB_PMU && PM && PPC32
|
||||
|
||||
config PMAC_MEDIABAY
|
||||
bool "Support PowerBook hotswap media bay"
|
||||
|
|
|
@ -90,7 +90,8 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
|
|||
static inline struct page *pte_alloc_one(struct mm_struct *mm,
|
||||
unsigned long address)
|
||||
{
|
||||
return virt_to_page(pte_alloc_one_kernel(mm, address));
|
||||
pte_t *pte = pte_alloc_one_kernel(mm, address);
|
||||
return pte ? virt_to_page(pte) : NULL;
|
||||
}
|
||||
|
||||
static inline void pte_free_kernel(pte_t *pte)
|
||||
|
|
|
@ -38,6 +38,15 @@ extern void pte_free_finish(void);
|
|||
|
||||
static inline void tlb_flush(struct mmu_gather *tlb)
|
||||
{
|
||||
struct ppc64_tlb_batch *tlbbatch = &__get_cpu_var(ppc64_tlb_batch);
|
||||
|
||||
/* If there's a TLB batch pending, then we must flush it because the
|
||||
* pages are going to be freed and we really don't want to have a CPU
|
||||
* access a freed page because it has a stale TLB
|
||||
*/
|
||||
if (tlbbatch->index)
|
||||
__flush_tlb_pending(tlbbatch);
|
||||
|
||||
pte_free_finish();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue