Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 06367d58 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull powerpc fixes from Ben Herrenschmidt:
 "Here are a few things for -rc2, this time it's all written by me so it
  can only be perfect .... right ? :)

  So we have the fix to call irq_enter/exit on the irq stack we've been
  discussing, plus a cleanup on top to remove an unused (and broken)
  stack limit tracking feature (well, make it 32-bit only in fact where
  it is used and works properly).

  Then we have two things that I wrote over the last couple of days and
  made the executive decision to include just because I can (and I'm
  sure you won't object .... right ?).

  They fix a couple of annoying and long standing "issues":

   - We had separate zImages for when booting via Open Firmware vs.
     booting via a flat device-tree, while it's trivial to make one that
     deals with both

   - We wasted a ton of cycles spinning secondary CPUs uselessly at boot
     instead of starting them when needed on pseries, thus contributing
     significantly to global warming"

* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
  powerpc/pseries: Do not start secondaries in Open Firmware
  powerpc/zImage: make the "OF" wrapper support ePAPR boot
  powerpc: Remove ksp_limit on ppc64
  powerpc/irq: Run softirqs off the top of the irq stack
parents 654fdd04 dbe78b40
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c
src-wlib-$(CONFIG_PPC_82xx) += pq2.c fsl-soc.c planetcore.c
src-wlib-$(CONFIG_EMBEDDED6xx) += mv64x60.c mv64x60_i2c.c ugecon.c

src-plat-y := of.c
src-plat-y := of.c epapr.c
src-plat-$(CONFIG_40x) += fixed-head.S ep405.c cuboot-hotfoot.c \
				treeboot-walnut.c cuboot-acadia.c \
				cuboot-kilauea.c simpleboot.c \
@@ -97,7 +97,7 @@ src-plat-$(CONFIG_EMBEDDED6xx) += cuboot-pq2.c cuboot-mpc7448hpc2.c \
					prpmc2800.c
src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c
src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c
src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c
src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c

src-wlib := $(sort $(src-wlib-y))
src-plat := $(sort $(src-plat-y))
+9 −0
Original line number Diff line number Diff line
extern void epapr_platform_init(unsigned long r3, unsigned long r4,
				unsigned long r5, unsigned long r6,
				unsigned long r7);

void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
		   unsigned long r6, unsigned long r7)
{
	epapr_platform_init(r3, r4, r5, r6, r7);
}
+2 −2
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ static void platform_fixups(void)
		       fdt_addr, fdt_totalsize((void *)fdt_addr), ima_size);
}

void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
void epapr_platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
			 unsigned long r6, unsigned long r7)
{
	epapr_magic = r6;
+15 −1
Original line number Diff line number Diff line
@@ -26,6 +26,9 @@

static unsigned long claim_base;

void epapr_platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
			 unsigned long r6, unsigned long r7);

static void *of_try_claim(unsigned long size)
{
	unsigned long addr = 0;
@@ -61,7 +64,7 @@ static void of_image_hdr(const void *hdr)
	}
}

void platform_init(unsigned long a1, unsigned long a2, void *promptr)
static void of_platform_init(unsigned long a1, unsigned long a2, void *promptr)
{
	platform_ops.image_hdr = of_image_hdr;
	platform_ops.malloc = of_try_claim;
@@ -81,3 +84,14 @@ void platform_init(unsigned long a1, unsigned long a2, void *promptr)
		loader_info.initrd_size = a2;
	}
}

void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
		   unsigned long r6, unsigned long r7)
{
	/* Detect OF vs. ePAPR boot */
	if (r5)
		of_platform_init(r3, r4, (void *)r5);
	else
		epapr_platform_init(r3, r4, r5, r6, r7);
}
+5 −4
Original line number Diff line number Diff line
@@ -148,18 +148,18 @@ make_space=y

case "$platform" in
pseries)
    platformo=$object/of.o
    platformo="$object/of.o $object/epapr.o"
    link_address='0x4000000'
    ;;
maple)
    platformo=$object/of.o
    platformo="$object/of.o $object/epapr.o"
    link_address='0x400000'
    ;;
pmac|chrp)
    platformo=$object/of.o
    platformo="$object/of.o $object/epapr.o"
    ;;
coff)
    platformo="$object/crt0.o $object/of.o"
    platformo="$object/crt0.o $object/of.o $object/epapr.o"
    lds=$object/zImage.coff.lds
    link_address='0x500000'
    pie=
@@ -253,6 +253,7 @@ treeboot-iss4xx-mpic)
    platformo="$object/treeboot-iss4xx.o"
    ;;
epapr)
    platformo="$object/epapr.o $object/epapr-wrapper.o"
    link_address='0x20000000'
    pie=-pie
    ;;
Loading