Skip to content

Commit

Permalink
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/gi…
Browse files Browse the repository at this point in the history
…t/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()
  • Loading branch information
Linus Torvalds committed Jun 3, 2007
2 parents c4d36a8 + 627aa94 commit 20c4856
Show file tree
Hide file tree
Showing 13 changed files with 46 additions and 27 deletions.
1 change: 0 additions & 1 deletion arch/powerpc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
22 changes: 12 additions & 10 deletions arch/powerpc/boot/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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
Expand Down Expand Up @@ -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),"")
Expand Down Expand Up @@ -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 $@

Expand Down
4 changes: 2 additions & 2 deletions arch/powerpc/boot/wrapper
Original file line number Diff line number Diff line change
Expand Up @@ -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
;;
Expand Down Expand Up @@ -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"
;;
Expand Down
6 changes: 3 additions & 3 deletions arch/powerpc/kernel/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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 */
Expand Down
11 changes: 6 additions & 5 deletions arch/powerpc/kernel/prom.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 2 additions & 0 deletions arch/powerpc/kernel/ptrace.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 */

Expand Down
1 change: 1 addition & 0 deletions arch/powerpc/platforms/pasemi/idle.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

#include <asm/machdep.h>
#include <asm/reg.h>
#include <asm/smp.h>

#include "pasemi.h"

Expand Down
1 change: 1 addition & 0 deletions arch/powerpc/platforms/ps3/interrupt.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include <asm/machdep.h>
#include <asm/udbg.h>
#include <asm/lv1call.h>
#include <asm/smp.h>

#include "platform.h"

Expand Down
10 changes: 6 additions & 4 deletions arch/powerpc/platforms/pseries/xics.c
Original file line number Diff line number Diff line change
Expand Up @@ -752,6 +752,7 @@ void __init xics_init_IRQ(void)
void xics_request_IPIs(void)
{
unsigned int ipi;
int rc;

ipi = irq_create_mapping(xics_host, XICS_IPI);
BUG_ON(ipi == NO_IRQ);
Expand All @@ -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 */

Expand Down
1 change: 1 addition & 0 deletions arch/ppc/syslib/ibm_ocp.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include <linux/module.h>
#include <asm/ibm4xx.h>
#include <asm/ocp.h>

struct ocp_sys_info_data ocp_sys_info = {
Expand Down
2 changes: 1 addition & 1 deletion drivers/macintosh/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
3 changes: 2 additions & 1 deletion include/asm-powerpc/pgalloc-64.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
9 changes: 9 additions & 0 deletions include/asm-powerpc/tlb.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}

Expand Down

0 comments on commit 20c4856

Please sign in to comment.