Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 11504
b: refs/heads/master
c: b08567c
h: refs/heads/master
v: v3
  • Loading branch information
Stephen Rothwell committed Sep 30, 2005
1 parent 4590644 commit a7fec5f
Show file tree
Hide file tree
Showing 19 changed files with 57 additions and 70 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c0c0d996d08e450164adedc249c1bbbca63524ce
refs/heads/master: b08567cb680686cdea9e362c0ccf0a08d77b9f0c
2 changes: 2 additions & 0 deletions trunk/arch/powerpc/kernel/ppc_ksyms.c
Original file line number Diff line number Diff line change
Expand Up @@ -182,9 +182,11 @@ EXPORT_SYMBOL(flush_tlb_kernel_range);
EXPORT_SYMBOL(flush_tlb_page);
EXPORT_SYMBOL(_tlbie);
#ifdef CONFIG_ALTIVEC
EXPORT_SYMBOL(last_task_used_altivec);
EXPORT_SYMBOL(giveup_altivec);
#endif /* CONFIG_ALTIVEC */
#ifdef CONFIG_SPE
EXPORT_SYMBOL(last_task_used_spe);
EXPORT_SYMBOL(giveup_spe);
#endif /* CONFIG_SPE */
#ifdef CONFIG_SMP
Expand Down
17 changes: 5 additions & 12 deletions trunk/arch/powerpc/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,11 @@ struct task_struct *__switch_to(struct task_struct *prev,
*/
if (prev->thread.regs && (prev->thread.regs->msr & MSR_VEC))
giveup_altivec(prev);
/* Avoid the trap. On smp this this never happens since
* we don't set last_task_used_altivec -- Cort
*/
if (new->thread.regs && last_task_used_altivec == new)
new->thread.regs->msr |= MSR_VEC;
#endif /* CONFIG_ALTIVEC */
#ifdef CONFIG_SPE
/*
Expand All @@ -283,24 +288,12 @@ struct task_struct *__switch_to(struct task_struct *prev,
*/
if ((prev->thread.regs && (prev->thread.regs->msr & MSR_SPE)))
giveup_spe(prev);
#endif /* CONFIG_SPE */

#else /* CONFIG_SMP */
#ifdef CONFIG_ALTIVEC
/* Avoid the trap. On smp this this never happens since
* we don't set last_task_used_altivec -- Cort
*/
if (new->thread.regs && last_task_used_altivec == new)
new->thread.regs->msr |= MSR_VEC;
#endif /* CONFIG_ALTIVEC */
#ifdef CONFIG_SPE
/* Avoid the trap. On smp this this never happens since
* we don't set last_task_used_spe
*/
if (new->thread.regs && last_task_used_spe == new)
new->thread.regs->msr |= MSR_SPE;
#endif /* CONFIG_SPE */

#endif /* CONFIG_SMP */

#ifdef CONFIG_PPC64 /* for now */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/*
* HvCallSm.h
* Copyright (C) 2001 Mike Corrigan IBM Corporation
*
* This program is free software; you can redistribute it and/or modify
Expand All @@ -16,8 +15,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _HVCALLSM_H
#define _HVCALLSM_H
#ifndef _ISERIES_CALL_SM_H
#define _ISERIES_CALL_SM_H

/*
* This file contains the "hypervisor call" interface which is used to
Expand All @@ -35,4 +34,4 @@ static inline u64 HvCallSm_get64BitsOfAccessMap(HvLpIndex lpIndex,
return HvCall2(HvCallSmGet64BitsOfAccessMap, lpIndex, indexIntoBitMap);
}

#endif /* _HVCALLSM_H */
#endif /* _ISERIES_CALL_SM_H */
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/*
* ItIplParmsReal.h
* Copyright (C) 2001 Mike Corrigan IBM Corporation
*
* This program is free software; you can redistribute it and/or modify
Expand All @@ -16,8 +15,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _ITIPLPARMSREAL_H
#define _ITIPLPARMSREAL_H
#ifndef _ISERIES_IPL_PARMS_H
#define _ISERIES_IPL_PARMS_H

/*
* This struct maps the IPL Parameters DMA'd from the SP.
Expand Down Expand Up @@ -68,4 +67,4 @@ struct ItIplParmsReal {

extern struct ItIplParmsReal xItIplParmsReal;

#endif /* _ITIPLPARMSREAL_H */
#endif /* _ISERIES_IPL_PARMS_H */
3 changes: 2 additions & 1 deletion trunk/arch/powerpc/platforms/iseries/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
#include <asm/iSeries/HvLpEvent.h>
#include <asm/iSeries/HvCallPci.h>
#include <asm/iSeries/HvCallXm.h>
#include <asm/iSeries/iSeries_irq.h>

#include "irq.h"

/* This maps virtual irq numbers to real irqs */
unsigned int virt_irq_to_real_map[NR_IRQS];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#ifndef __ISERIES_IRQ_H__
#define __ISERIES_IRQ_H__
#ifndef _ISERIES_IRQ_H
#define _ISERIES_IRQ_H

extern void iSeries_init_IRQ(void);
extern int iSeries_allocate_IRQ(HvBusNumber, HvSubBusNumber, HvAgentId);
extern void iSeries_activate_IRQs(void);

#endif /* __ISERIES_IRQ_H__ */
#endif /* _ISERIES_IRQ_H */
10 changes: 5 additions & 5 deletions trunk/arch/powerpc/platforms/iseries/lpardata.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@
#include <asm/lppaca.h>
#include <asm/iSeries/ItLpRegSave.h>
#include <asm/paca.h>
#include <asm/iSeries/HvReleaseData.h>
#include <asm/iSeries/LparMap.h>
#include <asm/iSeries/ItVpdAreas.h>
#include <asm/iSeries/ItIplParmsReal.h>
#include <asm/iSeries/ItExtVpdPanel.h>
#include <asm/iSeries/ItLpQueue.h>
#include <asm/iSeries/IoHriProcessorVpd.h>
#include <asm/iSeries/ItSpCommArea.h>

#include "vpd_areas.h"
#include "spcomm_area.h"
#include "ipl_parms.h"
#include "processor_vpd.h"
#include "release_data.h"

/* The HvReleaseData is the root of the information shared between
* the hypervisor and Linux.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/*
* IoHriMainStore.h
* Copyright (C) 2001 Mike Corrigan IBM Corporation
*
* This program is free software; you can redistribute it and/or modify
Expand All @@ -17,8 +16,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/

#ifndef _IOHRIMAINSTORE_H
#define _IOHRIMAINSTORE_H
#ifndef _ISERIES_MAIN_STORE_H
#define _ISERIES_MAIN_STORE_H

/* Main Store Vpd for Condor,iStar,sStar */
struct IoHriMainStoreSegment4 {
Expand Down Expand Up @@ -163,4 +162,4 @@ struct IoHriMainStoreSegment5 {

extern u64 xMsVpd[];

#endif /* _IOHRIMAINSTORE_H */
#endif /* _ISERIES_MAIN_STORE_H */
3 changes: 2 additions & 1 deletion trunk/arch/powerpc/platforms/iseries/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,13 @@

#include <asm/iSeries/HvCallPci.h>
#include <asm/iSeries/HvCallXm.h>
#include <asm/iSeries/iSeries_irq.h>
#include <asm/iSeries/iSeries_pci.h>
#include <asm/iSeries/mf.h>

#include <asm/ppc-pci.h>

#include "irq.h"

extern unsigned long io_page_mask;

/*
Expand Down
5 changes: 3 additions & 2 deletions trunk/arch/powerpc/platforms/iseries/proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@
#include <asm/lppaca.h>
#include <asm/iSeries/ItLpQueue.h>
#include <asm/iSeries/HvCallXm.h>
#include <asm/iSeries/IoHriMainStore.h>
#include <asm/iSeries/IoHriProcessorVpd.h>

#include "processor_vpd.h"
#include "main_store.h"

static int __init iseries_proc_create(void)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/*
* IoHriProcessorVpd.h
* Copyright (C) 2001 Mike Corrigan IBM Corporation
*
* This program is free software; you can redistribute it and/or modify
Expand All @@ -16,8 +15,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _IOHRIPROCESSORVPD_H
#define _IOHRIPROCESSORVPD_H
#ifndef _ISERIES_PROCESSOR_VPD_H
#define _ISERIES_PROCESSOR_VPD_H

#include <asm/types.h>

Expand Down Expand Up @@ -83,4 +82,4 @@ struct IoHriProcessorVpd {

extern struct IoHriProcessorVpd xIoHriProcessorVpd[];

#endif /* _IOHRIPROCESSORVPD_H */
#endif /* _ISERIES_PROCESSOR_VPD_H */
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/*
* HvReleaseData.h
* Copyright (C) 2001 Mike Corrigan IBM Corporation
*
* This program is free software; you can redistribute it and/or modify
Expand All @@ -16,8 +15,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _HVRELEASEDATA_H
#define _HVRELEASEDATA_H
#ifndef _ISERIES_RELEASE_DATA_H
#define _ISERIES_RELEASE_DATA_H

/*
* This control block contains the critical information about the
Expand Down Expand Up @@ -61,4 +60,4 @@ struct HvReleaseData {

extern struct HvReleaseData hvReleaseData;

#endif /* _HVRELEASEDATA_H */
#endif /* _ISERIES_RELEASE_DATA_H */
10 changes: 5 additions & 5 deletions trunk/arch/powerpc/platforms/iseries/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,18 @@
#include <asm/iSeries/HvCallHpt.h>
#include <asm/iSeries/HvLpConfig.h>
#include <asm/iSeries/HvCallEvent.h>
#include <asm/iSeries/HvCallSm.h>
#include <asm/iSeries/HvCallXm.h>
#include <asm/iSeries/ItLpQueue.h>
#include <asm/iSeries/IoHriMainStore.h>
#include <asm/iSeries/mf.h>
#include <asm/iSeries/HvLpEvent.h>
#include <asm/iSeries/iSeries_irq.h>
#include <asm/iSeries/IoHriProcessorVpd.h>
#include <asm/iSeries/ItVpdAreas.h>
#include <asm/iSeries/LparMap.h>

#include "setup.h"
#include "irq.h"
#include "vpd_areas.h"
#include "processor_vpd.h"
#include "main_store.h"
#include "call_sm.h"

extern void hvlog(char *fmt, ...);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/*
* ItSpCommArea.h
* Copyright (C) 2001 Mike Corrigan IBM Corporation
*
* This program is free software; you can redistribute it and/or modify
Expand All @@ -17,8 +16,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/

#ifndef _ITSPCOMMAREA_H
#define _ITSPCOMMAREA_H
#ifndef _ISERIES_SPCOMM_AREA_H
#define _ISERIES_SPCOMM_AREA_H


struct SpCommArea {
Expand All @@ -34,4 +33,4 @@ struct SpCommArea {

extern struct SpCommArea xSpCommArea;

#endif /* _ITSPCOMMAREA_H */
#endif /* _ISERIES_SPCOMM_AREA_H */
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/*
* ItVpdAreas.h
* Copyright (C) 2001 Mike Corrigan IBM Corporation
*
* This program is free software; you can redistribute it and/or modify
Expand All @@ -16,8 +15,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _ITVPDAREAS_H
#define _ITVPDAREAS_H
#ifndef _ISERIES_VPD_AREAS_H
#define _ISERIES_VPD_AREAS_H

/*
* This file defines the address and length of all of the VPD area passed to
Expand Down Expand Up @@ -86,4 +85,4 @@ struct ItVpdAreas {

extern struct ItVpdAreas itVpdAreas;

#endif /* _ITVPDAREAS_H */
#endif /* _ISERIES_VPD_AREAS_H */
7 changes: 3 additions & 4 deletions trunk/arch/powerpc/platforms/powermac/pmac_pic.c
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ void __init pmac_pic_init(void)
prom_get_irq_senses(senses, 0, 128);
mpic1 = mpic_alloc(irqctrler->addrs[0].address,
MPIC_PRIMARY | MPIC_WANTS_RESET,
0, 0, 128, 252, senses, 128, " OpenPIC ");
0, 0, 128, 256, senses, 128, " K2-MPIC ");
BUG_ON(mpic1 == NULL);
mpic_init(mpic1);

Expand All @@ -441,15 +441,14 @@ void __init pmac_pic_init(void)
irqctrler2->intrs[0].line);

pmac_call_feature(PMAC_FTR_ENABLE_MPIC, irqctrler2, 0, 0);
prom_get_irq_senses(senses, 128, 128 + 124);
prom_get_irq_senses(senses, 128, 128 + 128);

/* We don't need to set MPIC_BROKEN_U3 here since we don't have
* hypertransport interrupts routed to it
*/
mpic2 = mpic_alloc(irqctrler2->addrs[0].address,
MPIC_BIG_ENDIAN | MPIC_WANTS_RESET,
0, 128, 124, 0, senses, 124,
" U3-MPIC ");
0, 128, 128, 0, senses, 128, " U3-MPIC ");
BUG_ON(mpic2 == NULL);
mpic_init(mpic2);
mpic_setup_cascade(irqctrler2->intrs[0].line,
Expand Down
10 changes: 5 additions & 5 deletions trunk/arch/powerpc/platforms/powermac/pmac_smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
#include <asm/machdep.h>
#include <asm/pmac_feature.h>
#include <asm/time.h>
#include <asm/mpic.h>
#include <asm/open_pic.h>
#include <asm/cacheflush.h>
#include <asm/keylargo.h>

Expand Down Expand Up @@ -638,14 +638,14 @@ void smp_core99_message_pass(int target, int msg, unsigned long data, int wait)
}
switch (target) {
case MSG_ALL:
mpic_send_ipi(msg, cpus_addr(mask)[0]);
mpic_send_ipi(msg, mask);
break;
case MSG_ALL_BUT_SELF:
cpu_clear(smp_processor_id(), mask);
mpic_send_ipi(msg, cpus_addr(mask)[0]);
mpic_send_ipi(msg, mask);
break;
default:
mpic_send_ipi(msg, 1 << target);
mpic_send_ipi(msg, cpumask_of_cpu(target));
break;
}
}
Expand Down Expand Up @@ -678,7 +678,7 @@ int __cpu_disable(void)
cpu_clear(smp_processor_id(), cpu_online_map);

/* XXX reset cpu affinity here */
mpic_cpu_set_priority(0xf);
openpic_set_priority(0xf);
asm volatile("mtdec %0" : : "r" (0x7fffffff));
mb();
udelay(20);
Expand Down
3 changes: 0 additions & 3 deletions trunk/arch/powerpc/sysdev/mpic.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,6 @@ static struct mpic *mpics;
static struct mpic *mpic_primary;
static DEFINE_SPINLOCK(mpic_lock);

#ifdef CONFIG_PPC32 /* XXX for now */
#define distribute_irqs CONFIG_IRQ_ALL_CPUS
#endif

/*
* Register accessor functions
Expand Down

0 comments on commit a7fec5f

Please sign in to comment.