All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jay Lan <jlan@sgi.com>
To: linux-ia64@vger.kernel.org
Subject: [PATCH 1/2] IA64 kdump: Machine vector code for new SAL call
Date: Fri, 10 Nov 2006 23:59:20 +0000	[thread overview]
Message-ID: <45551258.8090305@sgi.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 139 bytes --]

Attach a patch for adding a machine vector notifying the platform
specific code from Jack Steiner. His signature in the attached patch.




[-- Attachment #2: patch_warm_reboot --]
[-- Type: text/plain, Size: 4913 bytes --]

The SN prom requires that some internal state be reset prior to kexec'ing 
a new kernel. 

Add a machine vector notifying the platform-specific code that a kexec
is about to occur. The SN code for this machine vector will issue a SAL call.


	Signed-off-by: Jack Steiner <steiner@sgi.com>


Index: linux/include/asm-ia64/machvec.h
===================================================================
--- linux.orig/include/asm-ia64/machvec.h	2006-10-31 18:44:46.098133313 -0800
+++ linux/include/asm-ia64/machvec.h	2006-10-31 18:47:22.264068143 -0800
@@ -35,6 +35,7 @@ typedef int ia64_mv_pci_legacy_read_t (s
 typedef int ia64_mv_pci_legacy_write_t (struct pci_bus *, u16 port, u32 val,
 					u8 size);
 typedef void ia64_mv_migrate_t(struct task_struct * task);
+typedef void ia64_mv_kernel_launch_event_t(void);
 
 /* DMA-mapping interface: */
 typedef void ia64_mv_dma_init (void);
@@ -205,6 +206,7 @@ struct ia64_machine_vector {
 	ia64_mv_readq_relaxed_t *readq_relaxed;
 	ia64_mv_migrate_t *migrate;
 	ia64_mv_msi_init_t *msi_init;
+	ia64_mv_kernel_launch_event_t *kernel_launch_event;
 } __attribute__((__aligned__(16))); /* align attrib? see above comment */
 
 #define MACHVEC_INIT(name)			\
@@ -251,6 +253,7 @@ struct ia64_machine_vector {
 	platform_readq_relaxed,			\
 	platform_migrate,			\
 	platform_msi_init,			\
+	platform_kernel_launch_event,		\
 }
 
 extern struct ia64_machine_vector ia64_mv;
@@ -303,6 +306,9 @@ extern ia64_mv_dma_supported		swiotlb_dm
 #ifndef platform_tlb_migrate_finish
 # define platform_tlb_migrate_finish	machvec_noop_mm
 #endif
+#ifndef platform_kernel_launch_event
+# define platform_kernel_launch_event	machvec_noop
+#endif
 #ifndef platform_dma_init
 # define platform_dma_init		swiotlb_init
 #endif
Index: linux/include/asm-ia64/machvec_sn2.h
===================================================================
--- linux.orig/include/asm-ia64/machvec_sn2.h	2006-10-31 18:44:46.098133313 -0800
+++ linux/include/asm-ia64/machvec_sn2.h	2006-10-31 18:47:22.268068193 -0800
@@ -67,6 +67,7 @@ extern ia64_mv_dma_sync_sg_for_device	sn
 extern ia64_mv_dma_mapping_error	sn_dma_mapping_error;
 extern ia64_mv_dma_supported		sn_dma_supported;
 extern ia64_mv_migrate_t		sn_migrate;
+extern ia64_mv_kernel_launch_event_t	sn_kernel_launch_event;
 extern ia64_mv_msi_init_t		sn_msi_init;
 
 
@@ -119,6 +120,7 @@ extern ia64_mv_msi_init_t		sn_msi_init;
 #define platform_dma_mapping_error		sn_dma_mapping_error
 #define platform_dma_supported		sn_dma_supported
 #define platform_migrate		sn_migrate
+#define platform_kernel_launch_event	sn_kernel_launch_event
 #ifdef CONFIG_PCI_MSI
 #define platform_msi_init		sn_msi_init
 #else
Index: linux/include/asm-ia64/sn/sn_sal.h
===================================================================
--- linux.orig/include/asm-ia64/sn/sn_sal.h	2006-10-31 18:44:46.098133313 -0800
+++ linux/include/asm-ia64/sn/sn_sal.h	2006-11-07 10:30:01.859754859 -0800
@@ -87,6 +87,8 @@
 #define  SN_SAL_INJECT_ERROR			   0x02000067
 #define  SN_SAL_SET_CPU_NUMBER			   0x02000068
 
+#define SN_SAL_KERNEL_LAUNCH_EVENT		   0x02000069
+
 /*
  * Service-specific constants
  */
@@ -1154,4 +1156,13 @@ ia64_sn_set_cpu_number(int cpu)
 	SAL_CALL_NOLOCK(rv, SN_SAL_SET_CPU_NUMBER, cpu, 0, 0, 0, 0, 0, 0);
 	return rv.status;
 }
+
+static inline int
+ia64_sn_kernel_launch_event(void)
+{
+	struct ia64_sal_retval rv;
+
+	SAL_CALL_NOLOCK(rv, SN_SAL_KERNEL_LAUNCH_EVENT, 0, 0, 0, 0, 0, 0, 0);
+	return rv.status;
+}
 #endif /* _ASM_IA64_SN_SN_SAL_H */
Index: linux/arch/ia64/sn/kernel/setup.c
===================================================================
--- linux.orig/arch/ia64/sn/kernel/setup.c	2006-10-31 18:44:46.098133313 -0800
+++ linux/arch/ia64/sn/kernel/setup.c	2006-11-07 10:44:30.486080375 -0800
@@ -765,3 +765,11 @@ int sn_prom_feature_available(int id)
 }
 EXPORT_SYMBOL(sn_prom_feature_available);
 
+void
+sn_kernel_launch_event(void)
+{
+	/* ignore status until we understand possible failures, if any */
+	if (ia64_sn_kernel_launch_event())
+		printk(KERN_ERR "KEXEC is not supported in this PROM. Please update the PROM.\n");
+}
+
Index: linux/arch/ia64/kernel/machine_kexec.c
===================================================================
--- linux.orig/arch/ia64/kernel/machine_kexec.c	2006-10-31 18:44:46.110133461 -0800
+++ linux/arch/ia64/kernel/machine_kexec.c	2006-11-07 10:38:36.654033757 -0800
@@ -18,6 +18,7 @@
 #include <asm/setup.h>
 #include <asm/delay.h>
 #include <asm/meminit.h>
+#include <asm/machvec.h>
 
 typedef void (*relocate_new_kernel_t)(unsigned long, unsigned long,
 		struct ia64_boot_param *, unsigned long);
@@ -125,6 +126,7 @@ static void ia64_machine_kexec(struct un
 		ia64_eoi();
 		vector = ia64_get_ivr();
 	}
+	platform_kernel_launch_event();
 	rnk = (relocate_new_kernel_t)&code_addr;
 	(*rnk)(image->head, image->start, ia64_boot_param,
 		     GRANULEROUNDDOWN((unsigned long) pal_addr));


                 reply	other threads:[~2006-11-10 23:59 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=45551258.8090305@sgi.com \
    --to=jlan@sgi.com \
    --cc=linux-ia64@vger.kernel.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.