From: Geoff Levand <geoffrey.levand@am.sony.com>
To: michael@ellerman.id.au
Cc: linuxppc-dev@ozlabs.org, Paul Mackerras <paulus@samba.org>
Subject: Re: [patch 08/18] PS3: Kexec support
Date: Wed, 06 Jun 2007 14:55:00 -0700 [thread overview]
Message-ID: <46672D34.8010808@am.sony.com> (raw)
In-Reply-To: <1181102510.5536.15.camel@concordia.ozlabs.ibm.com>
Michael Ellerman wrote:
> On Tue, 2007-06-05 at 20:00 -0700, Geoff Levand wrote:
>> Fixup the core platform parts needed for kexec to work on the PS3.
>> - Setup ps3_hpte_clear correctly.
>> - Mask interrupts on irq removal.
>> - Release all hypervisor resources.
>
> The irq changes might be kexec related, but it's a mess to review. You
> seem to moving a bunch of code around in the patch as well.
Yes, I need to move the static chip_mask routines up so they would be
defined before the irq setup/destroy routines.
>> Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
>> ---
>> arch/powerpc/platforms/ps3/htab.c | 14 +-
>> arch/powerpc/platforms/ps3/interrupt.c | 199 ++++++++++++++++++++-------------
>> arch/powerpc/platforms/ps3/setup.c | 29 ++--
>> 3 files changed, 147 insertions(+), 95 deletions(-)
>>
>> --- a/arch/powerpc/platforms/ps3/htab.c
>> +++ b/arch/powerpc/platforms/ps3/htab.c
>> @@ -234,10 +234,18 @@ static void ps3_hpte_invalidate(unsigned
>>
>> static void ps3_hpte_clear(void)
>> {
>> - /* Make sure to clean up the frame buffer device first */
>> - ps3fb_cleanup();
>> + int result;
>>
>> - lv1_unmap_htab(htab_addr);
>> + DBG(" -> %s:%d\n", __func__, __LINE__);
>> +
>> + result = lv1_unmap_htab(htab_addr);
>> + BUG_ON(result);
>> +
>> + ps3_mm_shutdown();
>> +
>> + ps3_mm_vas_destroy();
>> +
>> + DBG(" <- %s:%d\n", __func__, __LINE__);
>> }
>
> Do you really want to be calling DBG() here? Hmm, it looks like it
> doesn't actually do anything?
Sure, it uses udbg_printf, and works OK.
>> +static void ps3_chip_mask(unsigned int virq)
>> +{
>> + struct ps3_private *pd = get_irq_chip_data(virq);
>> + u64 bit = 0x8000000000000000UL >> virq;
>> + u64 *p = &pd->bmp.mask;
>> + u64 old;
>> + unsigned long flags;
>> +
>> + pr_debug("%s:%d: cpu %u, virq %d\n", __func__, __LINE__, pd->cpu, virq);
>> +
>> + local_irq_save(flags);
>> + asm volatile(
>> + "1: ldarx %0,0,%3\n"
>> + "andc %0,%0,%2\n"
>> + "stdcx. %0,0,%3\n"
>> + "bne- 1b"
>> + : "=&r" (old), "+m" (*p)
>> + : "r" (bit), "r" (p)
>> + : "cc" );
>> +
>> + lv1_did_update_interrupt_mask(pd->node, pd->cpu);
>> + local_irq_restore(flags);
>
> How is this different from set_bit() ? (asm-powerpc/bitops.h)
>
> ps. now that I see you're just moving this code around someone's
> probably already asked that question.
This was contributed by Ben H as the fastest way. I think the
reason was that we could minimize the time between local_irq_save
and local_irq_restore?
>> static void ps3_machine_kexec(struct kimage *image)
>> {
>> - unsigned long ppe_id;
>> -
>> DBG(" -> %s:%d\n", __func__, __LINE__);
>>
>> - lv1_get_logical_ppe_id(&ppe_id);
>> - lv1_configure_irq_state_bitmap(ppe_id, 0, 0);
>> - ps3_mm_shutdown();
>> - ps3_mm_vas_destroy();
>> -
>> - default_machine_kexec(image);
>> + default_machine_kexec(image); // needs ipi, never returns.
>
> Just get rid of ps3_machine_kexec() and hook default_machine_kexec()
> directly into your ppc_md.
Right, just a debugging leftover...
-Geoff
next prev parent reply other threads:[~2007-06-06 21:55 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20070606024407.786638029@am.sony.com>
2007-06-06 2:59 ` [patch 01/18] Cell: Add spu shutdown method Geoff Levand
2007-06-06 4:08 ` Michael Ellerman
2007-06-06 14:41 ` André Detsch
2007-06-06 2:59 ` [patch 02/18] PS3: Rename IPI symbols Geoff Levand
2007-06-06 3:11 ` Stephen Rothwell
2007-06-06 14:48 ` Will Schmidt
2007-06-06 20:47 ` Geoff Levand
2007-06-06 20:49 ` Geoff Levand
2007-06-06 2:59 ` [patch 03/18] PS3: Use __maybe_unused Geoff Levand
2007-06-06 4:05 ` Michael Ellerman
2007-06-06 22:37 ` Geoff Levand
2007-06-06 2:59 ` [patch 04/18] PS3: Compare firmware version Geoff Levand
2007-06-06 2:59 ` [patch 05/18] PS3: Fix sparse warnings Geoff Levand
2007-06-06 14:21 ` Arnd Bergmann
2007-06-07 14:34 ` Geoff Levand
2007-06-08 5:59 ` Takao Shinohara
2007-06-06 2:59 ` [patch 06/18] PS3: Add support for HDMI RGB Full Range mode Geoff Levand
2007-06-06 3:00 ` [patch 07/18] PS3: Make ps3av.h usable from user space Geoff Levand
2007-06-06 7:46 ` Christoph Hellwig
2007-06-06 11:27 ` Geert Uytterhoeven
2007-06-06 16:44 ` Geoff Levand
2007-06-07 19:15 ` Christoph Hellwig
2007-06-06 3:00 ` [patch 08/18] PS3: Kexec support Geoff Levand
2007-06-06 4:01 ` Michael Ellerman
2007-06-06 21:55 ` Geoff Levand [this message]
2007-06-07 1:25 ` Stephen Rothwell
2007-06-07 1:33 ` Geoff Levand
2007-06-07 2:48 ` Stephen Rothwell
2007-06-07 2:31 ` Michael Ellerman
2007-06-07 2:54 ` Benjamin Herrenschmidt
2007-06-10 0:13 ` Geoff Levand
2007-06-09 8:17 ` [patch 08/18] PS3: Kexec support (and a tutoral on the kexec flow for 64 bit powerpc) Milton Miller
2007-06-09 22:47 ` Geoff Levand
2007-06-06 3:00 ` [patch 09/18] PS3: System-bus rework Geoff Levand
2007-06-06 6:43 ` Geert Uytterhoeven
2007-06-11 7:07 ` Milton Miller
2007-06-11 15:39 ` Geoff Levand
2007-06-11 15:45 ` Geert Uytterhoeven
2007-06-06 3:00 ` [patch 10/18] PS3: System-bus uevent Geoff Levand
2007-06-06 3:00 ` [patch 11/18] PS3: System-bus modinfo attribute Geoff Levand
2007-06-06 3:17 ` Stephen Rothwell
2007-06-06 3:00 ` [patch 12/18] PS3: Repository probe cleanups Geoff Levand
2007-06-06 3:01 ` [patch 13/18] PS3: USB system-bus rework Geoff Levand
2007-06-06 3:01 ` [patch 14/18] PS3: Vuart rework Geoff Levand
2007-06-06 3:01 ` [patch 15/18] PS3: System manager re-work Geoff Levand
2007-06-06 6:51 ` Geert Uytterhoeven
2007-06-06 3:01 ` [patch 16/18] PS3: Rework AV settings driver Geoff Levand
2007-06-06 6:49 ` Geert Uytterhoeven
2007-06-06 3:01 ` [patch 17/18] PS3: Frame buffer system-bus rework Geoff Levand
2007-06-06 6:51 ` Geert Uytterhoeven
2007-06-06 6:51 ` Geert Uytterhoeven
2007-06-06 15:56 ` [Linux-fbdev-devel] " Antonino A. Daplas
2007-06-06 23:08 ` Geoff Levand
2007-06-06 23:37 ` Antonino A. Daplas
2007-06-06 3:01 ` [patch 18/18] PS3: Device registration routines Geoff Levand
2007-06-06 6:57 ` Geert Uytterhoeven
2007-06-06 12:21 ` Geert Uytterhoeven
2007-06-06 3:04 ` [patch 13/18] PS3: USB system-bus rework Geoff Levand
2007-06-08 23:22 ` [patch] PS3: Fix USB return value Geoff Levand
2007-06-25 7:30 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46672D34.8010808@am.sony.com \
--to=geoffrey.levand@am.sony.com \
--cc=linuxppc-dev@ozlabs.org \
--cc=michael@ellerman.id.au \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.