diff --git a/debian/patches/bugfix/parisc/add-lockless-fw-funcs.patch b/debian/patches/bugfix/parisc/add-lockless-fw-funcs.patch deleted file mode 100644 index 588fa6af3..000000000 --- a/debian/patches/bugfix/parisc/add-lockless-fw-funcs.patch +++ /dev/null @@ -1,135 +0,0 @@ -From: Kyle McMartin -Date: Tue, 29 Jul 2008 04:09:22 +0000 (-0400) -Subject: parisc: add pdc_coproc_cfg_unlocked and set_firmware_width_unlocked -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fkyle%2Fparisc-2.6.git;a=commitdiff_plain;h=8735c10cff8486d58e03ee692ae9720f10cf9806 - -parisc: add pdc_coproc_cfg_unlocked and set_firmware_width_unlocked - -These functions are called only when bringing up the monarch cpu, -so it is safe to call them without taking the pdc spinlock. In the -future, this may become relevant for lockdep, since these functions were -taking spinlocks before start_kernel called the lockdep initializers. ---- - -Adjusted to apply to Debian's 2.6.26 by dann frazier - -diff -urpN linux-source-2.6.26.orig/arch/parisc/kernel/firmware.c linux-source-2.6.26/arch/parisc/kernel/firmware.c ---- linux-source-2.6.26.orig/arch/parisc/kernel/firmware.c 2008-07-13 15:51:29.000000000 -0600 -+++ linux-source-2.6.26/arch/parisc/kernel/firmware.c 2008-09-18 16:28:07.000000000 -0600 -@@ -150,26 +150,40 @@ static void convert_to_wide(unsigned lon - #endif - } - -+#ifdef CONFIG_64BIT -+void __init set_firmware_width_unlocked(void) -+{ -+ int ret; -+ -+ ret = mem_pdc_call(PDC_MODEL, PDC_MODEL_CAPABILITIES, -+ __pa(pdc_result), 0); -+ convert_to_wide(pdc_result); -+ if (pdc_result[0] != NARROW_FIRMWARE) -+ parisc_narrow_firmware = 0; -+} -+ - /** - * set_firmware_width - Determine if the firmware is wide or narrow. - * -- * This function must be called before any pdc_* function that uses the convert_to_wide -- * function. -+ * This function must be called before any pdc_* function that uses the -+ * convert_to_wide function. - */ - void __init set_firmware_width(void) - { --#ifdef CONFIG_64BIT -- int retval; - unsigned long flags; -+ spin_lock_irqsave(&pdc_lock, flags); -+ set_firmware_width_unlocked(); -+ spin_unlock_irqrestore(&pdc_lock, flags); -+} -+#else -+void __init set_firmware_width_unlocked(void) { -+ return; -+} - -- spin_lock_irqsave(&pdc_lock, flags); -- retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_CAPABILITIES, __pa(pdc_result), 0); -- convert_to_wide(pdc_result); -- if(pdc_result[0] != NARROW_FIRMWARE) -- parisc_narrow_firmware = 0; -- spin_unlock_irqrestore(&pdc_lock, flags); --#endif -+void __init set_firmware_width(void) { -+ return; - } -+#endif /*CONFIG_64BIT*/ - - /** - * pdc_emergency_unlock - Unlock the linux pdc lock -@@ -288,6 +302,20 @@ int pdc_chassis_warn(unsigned long *warn - return retval; - } - -+int __init pdc_coproc_cfg_unlocked(struct pdc_coproc_cfg *pdc_coproc_info) -+{ -+ int ret; -+ -+ ret = mem_pdc_call(PDC_COPROC, PDC_COPROC_CFG, __pa(pdc_result)); -+ convert_to_wide(pdc_result); -+ pdc_coproc_info->ccr_functional = pdc_result[0]; -+ pdc_coproc_info->ccr_present = pdc_result[1]; -+ pdc_coproc_info->revision = pdc_result[17]; -+ pdc_coproc_info->model = pdc_result[18]; -+ -+ return ret; -+} -+ - /** - * pdc_coproc_cfg - To identify coprocessors attached to the processor. - * @pdc_coproc_info: Return buffer address. -@@ -297,19 +325,14 @@ int pdc_chassis_warn(unsigned long *warn - */ - int __init pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info) - { -- int retval; -+ int ret; - unsigned long flags; - -- spin_lock_irqsave(&pdc_lock, flags); -- retval = mem_pdc_call(PDC_COPROC, PDC_COPROC_CFG, __pa(pdc_result)); -- convert_to_wide(pdc_result); -- pdc_coproc_info->ccr_functional = pdc_result[0]; -- pdc_coproc_info->ccr_present = pdc_result[1]; -- pdc_coproc_info->revision = pdc_result[17]; -- pdc_coproc_info->model = pdc_result[18]; -- spin_unlock_irqrestore(&pdc_lock, flags); -+ spin_lock_irqsave(&pdc_lock, flags); -+ ret = pdc_coproc_cfg_unlocked(pdc_coproc_info); -+ spin_unlock_irqrestore(&pdc_lock, flags); - -- return retval; -+ return ret; - } - - /** -diff -urpN linux-source-2.6.26.orig/include/asm-parisc/pdc.h linux-source-2.6.26/include/asm-parisc/pdc.h ---- linux-source-2.6.26.orig/include/asm-parisc/pdc.h 2008-07-13 15:51:29.000000000 -0600 -+++ linux-source-2.6.26/include/asm-parisc/pdc.h 2008-09-18 16:28:07.000000000 -0600 -@@ -600,6 +600,7 @@ int pdc_chassis_info(struct pdc_chassis_ - int pdc_chassis_disp(unsigned long disp); - int pdc_chassis_warn(unsigned long *warn); - int pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info); -+int pdc_coproc_cfg_unlocked(struct pdc_coproc_cfg *pdc_coproc_info); - int pdc_iodc_read(unsigned long *actcnt, unsigned long hpa, unsigned int index, - void *iodc_data, unsigned int iodc_data_size); - int pdc_system_map_find_mods(struct pdc_system_map_mod_info *pdc_mod_info, -@@ -638,6 +639,7 @@ int pdc_mem_mem_table(struct pdc_memory_ - #endif - - void set_firmware_width(void); -+void set_firmware_width_unlocked(void); - int pdc_do_firm_test_reset(unsigned long ftc_bitmap); - int pdc_do_reset(void); - int pdc_soft_power_info(unsigned long *power_reg); diff --git a/debian/patches/bugfix/parisc/hijack-jump-to-start_kernel.patch b/debian/patches/bugfix/parisc/hijack-jump-to-start_kernel.patch deleted file mode 100644 index 1450dbb9b..000000000 --- a/debian/patches/bugfix/parisc/hijack-jump-to-start_kernel.patch +++ /dev/null @@ -1,68 +0,0 @@ -From: Kyle McMartin -Date: Tue, 29 Jul 2008 04:11:13 +0000 (-0400) -Subject: parisc: hijack jump to start_kernel -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fkyle%2Fparisc-2.6.git;a=commitdiff_plain;h=1a189c07f9f65305442d6e99efac9ac44f86bc04 - -parisc: hijack jump to start_kernel - -Bang in our own start_parisc call, which initializes the PDC -width, and turns on the FPU. - -Previously, if CONFIG_PRINTK_TIME was on, we'd attempt to use -the FPU before we had enabled it, resulting in a difficult -to diagnose panic. - -This patch causes init_per_cpu to redundantly set these for -cpu0, but this is harmless. ---- - -diff --git a/arch/parisc/kernel/head.S b/arch/parisc/kernel/head.S -index a84e31e..0e3d9f9 100644 ---- a/arch/parisc/kernel/head.S -+++ b/arch/parisc/kernel/head.S -@@ -121,7 +121,7 @@ $pgt_fill_loop: - copy %r0,%r2 - - /* And the RFI Target address too */ -- load32 start_kernel,%r11 -+ load32 start_parisc,%r11 - - /* And the initial task pointer */ - load32 init_thread_union,%r6 -diff --git a/arch/parisc/kernel/setup.c b/arch/parisc/kernel/setup.c -index 39e7c5a..a59b71e 100644 ---- a/arch/parisc/kernel/setup.c -+++ b/arch/parisc/kernel/setup.c -@@ -368,6 +368,31 @@ static int __init parisc_init(void) - - return 0; - } -- - arch_initcall(parisc_init); - -+void start_parisc(void) -+{ -+ extern void start_kernel(void); -+ -+ int ret, cpunum; -+ struct pdc_coproc_cfg coproc_cfg; -+ -+ cpunum = smp_processor_id(); -+ -+ set_firmware_width_unlocked(); -+ -+ ret = pdc_coproc_cfg_unlocked(&coproc_cfg); -+ if (ret >= 0 && coproc_cfg.ccr_functional) { -+ mtctl(coproc_cfg.ccr_functional, 10); -+ -+ cpu_data[cpunum].fp_rev = coproc_cfg.revision; -+ cpu_data[cpunum].fp_model = coproc_cfg.model; -+ -+ asm volatile ("fstd %fr0,8(%sp)"); -+ } else { -+ panic("must have an fpu to boot linux"); -+ } -+ -+ start_kernel(); -+ // not reached -+} diff --git a/debian/patches/series/1~experimental.1 b/debian/patches/series/1~experimental.1 index e903482a7..9a1c5a5c9 100644 --- a/debian/patches/series/1~experimental.1 +++ b/debian/patches/series/1~experimental.1 @@ -22,8 +22,6 @@ + bugfix/powerpc/mm-mol.patch + bugfix/powerpc/lpar-console.patch + bugfix/all/sata_mv-clear_irq.patch -#+ bugfix/parisc/add-lockless-fw-funcs.patch -#+ bugfix/parisc/hijack-jump-to-start_kernel.patch #+ bugfix/all/wireless-regulatory-default-EU.patch #+ bugfix/all/ext3-add-support-for-non-native-signed-unsigned-htr.patch #+ bugfix/all/ext4-add-support-for-non-native-signed-unsigned-htr.patch