You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge
This commit is contained in:
+49
-34
@@ -71,15 +71,39 @@ config ARCH_MAY_HAVE_PC_FDC
|
||||
bool
|
||||
default y
|
||||
|
||||
config PPC_OF
|
||||
def_bool y
|
||||
|
||||
config PPC_UDBG_16550
|
||||
bool
|
||||
default n
|
||||
|
||||
config CRASH_DUMP
|
||||
bool "kernel crash dumps (EXPERIMENTAL)"
|
||||
depends on PPC_MULTIPLATFORM
|
||||
depends on EXPERIMENTAL
|
||||
help
|
||||
Build a kernel suitable for use as a kdump capture kernel.
|
||||
The kernel will be linked at a different address than normal, and
|
||||
so can only be used for Kdump.
|
||||
|
||||
Don't change this unless you know what you are doing.
|
||||
|
||||
config GENERIC_TBSYNC
|
||||
bool
|
||||
default y if PPC32 && SMP
|
||||
default n
|
||||
|
||||
menu "Processor support"
|
||||
choice
|
||||
prompt "Processor Type"
|
||||
depends on PPC32
|
||||
default 6xx
|
||||
|
||||
config 6xx
|
||||
config CLASSIC32
|
||||
bool "6xx/7xx/74xx"
|
||||
select PPC_FPU
|
||||
select 6xx
|
||||
help
|
||||
There are four families of PowerPC chips supported. The more common
|
||||
types (601, 603, 604, 740, 750, 7400), the Motorola embedded
|
||||
@@ -93,12 +117,20 @@ config 6xx
|
||||
|
||||
config PPC_52xx
|
||||
bool "Freescale 52xx"
|
||||
select 6xx
|
||||
select PPC_FPU
|
||||
|
||||
config PPC_82xx
|
||||
bool "Freescale 82xx"
|
||||
select 6xx
|
||||
select PPC_FPU
|
||||
|
||||
config PPC_83xx
|
||||
bool "Freescale 83xx"
|
||||
select 6xx
|
||||
select FSL_SOC
|
||||
select 83xx
|
||||
select PPC_FPU
|
||||
|
||||
config 40x
|
||||
bool "AMCC 40x"
|
||||
@@ -134,6 +166,13 @@ config POWER4
|
||||
depends on PPC64
|
||||
def_bool y
|
||||
|
||||
config 6xx
|
||||
bool
|
||||
|
||||
# this is temp to handle compat with arch=ppc
|
||||
config 83xx
|
||||
bool
|
||||
|
||||
config PPC_FPU
|
||||
bool
|
||||
default y if PPC64
|
||||
@@ -166,7 +205,7 @@ config PHYS_64BIT
|
||||
|
||||
config ALTIVEC
|
||||
bool "AltiVec Support"
|
||||
depends on 6xx || POWER4
|
||||
depends on CLASSIC32 || POWER4
|
||||
---help---
|
||||
This option enables kernel support for the Altivec extensions to the
|
||||
PowerPC processor. The kernel currently supports saving and restoring
|
||||
@@ -239,7 +278,7 @@ endmenu
|
||||
source "init/Kconfig"
|
||||
|
||||
menu "Platform support"
|
||||
depends on PPC64 || 6xx
|
||||
depends on PPC64 || CLASSIC32
|
||||
|
||||
choice
|
||||
prompt "Machine type"
|
||||
@@ -330,9 +369,6 @@ config PPC_CELL
|
||||
select MMIO_NVRAM
|
||||
select PPC_UDBG_16550
|
||||
|
||||
config PPC_OF
|
||||
def_bool y
|
||||
|
||||
config XICS
|
||||
depends on PPC_PSERIES
|
||||
bool
|
||||
@@ -375,26 +411,11 @@ config MPIC_BROKEN_U3
|
||||
depends on PPC_MAPLE
|
||||
default y
|
||||
|
||||
config PPC_UDBG_16550
|
||||
bool
|
||||
default n
|
||||
|
||||
config CELL_IIC
|
||||
depends on PPC_CELL
|
||||
bool
|
||||
default y
|
||||
|
||||
config CRASH_DUMP
|
||||
bool "kernel crash dumps (EXPERIMENTAL)"
|
||||
depends on PPC_MULTIPLATFORM
|
||||
depends on EXPERIMENTAL
|
||||
help
|
||||
Build a kernel suitable for use as a kdump capture kernel.
|
||||
The kernel will be linked at a different address than normal, and
|
||||
so can only be used for Kdump.
|
||||
|
||||
Don't change this unless you know what you are doing.
|
||||
|
||||
config IBMVIO
|
||||
depends on PPC_PSERIES || PPC_ISERIES
|
||||
bool
|
||||
@@ -410,11 +431,6 @@ config PPC_MPC106
|
||||
bool
|
||||
default n
|
||||
|
||||
config GENERIC_TBSYNC
|
||||
bool
|
||||
default y if PPC32 && SMP
|
||||
default n
|
||||
|
||||
source "drivers/cpufreq/Kconfig"
|
||||
|
||||
config CPU_FREQ_PMAC
|
||||
@@ -495,6 +511,7 @@ endmenu
|
||||
|
||||
source arch/powerpc/platforms/embedded6xx/Kconfig
|
||||
source arch/powerpc/platforms/4xx/Kconfig
|
||||
source arch/powerpc/platforms/83xx/Kconfig
|
||||
source arch/powerpc/platforms/85xx/Kconfig
|
||||
source arch/powerpc/platforms/8xx/Kconfig
|
||||
source arch/powerpc/platforms/cell/Kconfig
|
||||
@@ -718,7 +735,7 @@ config PPC_I8259
|
||||
config PPC_INDIRECT_PCI
|
||||
bool
|
||||
depends on PCI
|
||||
default y if 40x || 44x || 85xx || 83xx
|
||||
default y if 40x || 44x || 85xx
|
||||
default n
|
||||
|
||||
config EISA
|
||||
@@ -727,13 +744,16 @@ config EISA
|
||||
config SBUS
|
||||
bool
|
||||
|
||||
config FSL_SOC
|
||||
bool
|
||||
|
||||
# Yes MCA RS/6000s exist but Linux-PPC does not currently support any
|
||||
config MCA
|
||||
bool
|
||||
|
||||
config PCI
|
||||
bool "PCI support" if 40x || CPM2 || 83xx || 85xx || PPC_MPC52xx || (EMBEDDED && PPC_ISERIES)
|
||||
default y if !40x && !CPM2 && !8xx && !APUS && !83xx && !85xx
|
||||
bool "PCI support" if 40x || CPM2 || PPC_83xx || 85xx || PPC_MPC52xx || (EMBEDDED && PPC_ISERIES)
|
||||
default y if !40x && !CPM2 && !8xx && !APUS && !PPC_83xx && !85xx
|
||||
default PCI_PERMEDIA if !4xx && !CPM2 && !8xx && APUS
|
||||
default PCI_QSPAN if !4xx && !CPM2 && 8xx
|
||||
help
|
||||
@@ -746,11 +766,6 @@ config PCI_DOMAINS
|
||||
bool
|
||||
default PCI
|
||||
|
||||
config MPC83xx_PCI2
|
||||
bool " Supprt for 2nd PCI host controller"
|
||||
depends on PCI && MPC834x
|
||||
default y if MPC834x_SYS
|
||||
|
||||
config PCI_QSPAN
|
||||
bool "QSpan PCI"
|
||||
depends on !4xx && !CPM2 && 8xx
|
||||
|
||||
@@ -115,4 +115,46 @@ config PPC_OCP
|
||||
depends on IBM_OCP || XILINX_OCP
|
||||
default y
|
||||
|
||||
choice
|
||||
prompt "Early debugging (dangerous)"
|
||||
bool
|
||||
optional
|
||||
help
|
||||
Enable early debugging. Careful, if you enable debugging for the
|
||||
wrong type of machine your kernel _will not boot_.
|
||||
|
||||
config PPC_EARLY_DEBUG_LPAR
|
||||
bool "LPAR HV Console"
|
||||
depends on PPC_PSERIES
|
||||
help
|
||||
Select this to enable early debugging for a machine with a HVC
|
||||
console on vterm 0.
|
||||
|
||||
config PPC_EARLY_DEBUG_G5
|
||||
bool "Apple G5"
|
||||
depends on PPC_PMAC64
|
||||
help
|
||||
Select this to enable early debugging for Apple G5 machines.
|
||||
|
||||
config PPC_EARLY_DEBUG_RTAS
|
||||
bool "RTAS Panel"
|
||||
depends on PPC_RTAS
|
||||
help
|
||||
Select this to enable early debugging via the RTAS panel.
|
||||
|
||||
config PPC_EARLY_DEBUG_MAPLE
|
||||
bool "Maple real mode"
|
||||
depends on PPC_MAPLE
|
||||
help
|
||||
Select this to enable early debugging for Maple.
|
||||
|
||||
config PPC_EARLY_DEBUG_ISERIES
|
||||
bool "iSeries HV Console"
|
||||
depends on PPC_ISERIES
|
||||
help
|
||||
Select this to enable early debugging for legacy iSeries. You need
|
||||
to hit "Ctrl-x Ctrl-x" to see the messages on the console.
|
||||
|
||||
endchoice
|
||||
|
||||
endmenu
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
addnote
|
||||
infblock.c
|
||||
infblock.h
|
||||
infcodes.c
|
||||
infcodes.h
|
||||
inffast.c
|
||||
inffast.h
|
||||
inflate.c
|
||||
inftrees.c
|
||||
inftrees.h
|
||||
infutil.c
|
||||
infutil.h
|
||||
kernel-vmlinux.strip.c
|
||||
kernel-vmlinux.strip.gz
|
||||
uImage
|
||||
zImage
|
||||
zImage.vmode
|
||||
zconf.h
|
||||
zlib.h
|
||||
zutil.h
|
||||
@@ -176,4 +176,4 @@ $(obj)/uImage: $(obj)/vmlinux.gz
|
||||
install: $(CONFIGURE) $(BOOTIMAGE)
|
||||
sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" "$(BOOTIMAGE)"
|
||||
|
||||
clean-files := $(addprefix $(objtree)/, $(obj-boot) vmlinux.strip)
|
||||
clean-files += $(addprefix $(objtree)/, $(obj-boot) vmlinux.strip)
|
||||
|
||||
@@ -878,7 +878,7 @@ CONFIG_HVCS=m
|
||||
#
|
||||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_RTC is not set
|
||||
# CONFIG_GEN_RTC is not set
|
||||
CONFIG_GEN_RTC=y
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_APPLICOM is not set
|
||||
|
||||
@@ -61,9 +61,9 @@ obj-$(CONFIG_MODULES) += $(module-y)
|
||||
pci64-$(CONFIG_PPC64) += pci_64.o pci_dn.o pci_iommu.o \
|
||||
pci_direct_iommu.o iomap.o
|
||||
obj-$(CONFIG_PCI) += $(pci64-y)
|
||||
kexec-$(CONFIG_PPC64) := machine_kexec_64.o
|
||||
kexec-$(CONFIG_PPC64) := machine_kexec_64.o crash.o
|
||||
kexec-$(CONFIG_PPC32) := machine_kexec_32.o
|
||||
obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o $(kexec-y)
|
||||
obj-$(CONFIG_KEXEC) += machine_kexec.o $(kexec-y)
|
||||
|
||||
ifeq ($(CONFIG_PPC_ISERIES),y)
|
||||
$(obj)/head_64.o: $(obj)/lparmap.s
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#include <linux/kexec.h>
|
||||
#include <linux/bootmem.h>
|
||||
#include <linux/crash_dump.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/elf.h>
|
||||
#include <linux/elfcore.h>
|
||||
@@ -30,6 +29,7 @@
|
||||
#include <asm/kdump.h>
|
||||
#include <asm/lmb.h>
|
||||
#include <asm/firmware.h>
|
||||
#include <asm/smp.h>
|
||||
|
||||
#ifdef DEBUG
|
||||
#include <asm/udbg.h>
|
||||
|
||||
@@ -55,6 +55,7 @@ void __init kdump_setup(void)
|
||||
DBG(" <- kdump_setup()\n");
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PROC_VMCORE
|
||||
static int __init parse_elfcorehdr(char *p)
|
||||
{
|
||||
if (p)
|
||||
@@ -63,6 +64,7 @@ static int __init parse_elfcorehdr(char *p)
|
||||
return 0;
|
||||
}
|
||||
__setup("elfcorehdr=", parse_elfcorehdr);
|
||||
#endif
|
||||
|
||||
static int __init parse_savemaxmem(char *p)
|
||||
{
|
||||
|
||||
@@ -14,12 +14,6 @@
|
||||
#include <linux/threads.h>
|
||||
#include <asm/machdep.h>
|
||||
|
||||
/*
|
||||
* Provide a dummy crash_notes definition until crash dump is implemented.
|
||||
* This prevents breakage of crash_notes attribute in kernel/ksysfs.c.
|
||||
*/
|
||||
note_buf_t crash_notes[NR_CPUS];
|
||||
|
||||
void machine_crash_shutdown(struct pt_regs *regs)
|
||||
{
|
||||
if (ppc_md.machine_crash_shutdown)
|
||||
|
||||
@@ -271,6 +271,9 @@ void __devinit pcibios_claim_one_bus(struct pci_bus *b)
|
||||
list_for_each_entry(child_bus, &b->children, node)
|
||||
pcibios_claim_one_bus(child_bus);
|
||||
}
|
||||
#ifdef CONFIG_HOTPLUG
|
||||
EXPORT_SYMBOL_GPL(pcibios_claim_one_bus);
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_PPC_ISERIES
|
||||
static void __init pcibios_claim_of_setup(void)
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <asm/delay.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/lmb.h>
|
||||
#include <asm/udbg.h>
|
||||
|
||||
struct rtas_t rtas = {
|
||||
.lock = SPIN_LOCK_UNLOCKED
|
||||
@@ -52,7 +53,7 @@ EXPORT_SYMBOL(rtas_flash_term_hook);
|
||||
* are designed only for very early low-level debugging, which
|
||||
* is why the token is hard-coded to 10.
|
||||
*/
|
||||
void call_rtas_display_status(unsigned char c)
|
||||
static void call_rtas_display_status(char c)
|
||||
{
|
||||
struct rtas_args *args = &rtas.args;
|
||||
unsigned long s;
|
||||
@@ -65,14 +66,14 @@ void call_rtas_display_status(unsigned char c)
|
||||
args->nargs = 1;
|
||||
args->nret = 1;
|
||||
args->rets = (rtas_arg_t *)&(args->args[1]);
|
||||
args->args[0] = (int)c;
|
||||
args->args[0] = (unsigned char)c;
|
||||
|
||||
enter_rtas(__pa(args));
|
||||
|
||||
spin_unlock_irqrestore(&rtas.lock, s);
|
||||
}
|
||||
|
||||
void call_rtas_display_status_delay(unsigned char c)
|
||||
static void call_rtas_display_status_delay(char c)
|
||||
{
|
||||
static int pending_newline = 0; /* did last write end with unprinted newline? */
|
||||
static int width = 16;
|
||||
@@ -96,6 +97,11 @@ void call_rtas_display_status_delay(unsigned char c)
|
||||
}
|
||||
}
|
||||
|
||||
void __init udbg_init_rtas(void)
|
||||
{
|
||||
udbg_putc = call_rtas_display_status_delay;
|
||||
}
|
||||
|
||||
void rtas_progress(char *s, unsigned short hex)
|
||||
{
|
||||
struct device_node *root;
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <linux/unistd.h>
|
||||
#include <linux/serial.h>
|
||||
#include <linux/serial_8250.h>
|
||||
#include <linux/bootmem.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/kdump.h>
|
||||
#include <asm/prom.h>
|
||||
@@ -70,33 +71,6 @@
|
||||
#define DBG(fmt...)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Here are some early debugging facilities. You can enable one
|
||||
* but your kernel will not boot on anything else if you do so
|
||||
*/
|
||||
|
||||
/* This one is for use on LPAR machines that support an HVC console
|
||||
* on vterm 0
|
||||
*/
|
||||
extern void udbg_init_debug_lpar(void);
|
||||
/* This one is for use on Apple G5 machines
|
||||
*/
|
||||
extern void udbg_init_pmac_realmode(void);
|
||||
/* That's RTAS panel debug */
|
||||
extern void call_rtas_display_status_delay(unsigned char c);
|
||||
/* Here's maple real mode debug */
|
||||
extern void udbg_init_maple_realmode(void);
|
||||
|
||||
#define EARLY_DEBUG_INIT() do {} while(0)
|
||||
|
||||
#if 0
|
||||
#define EARLY_DEBUG_INIT() udbg_init_debug_lpar()
|
||||
#define EARLY_DEBUG_INIT() udbg_init_maple_realmode()
|
||||
#define EARLY_DEBUG_INIT() udbg_init_pmac_realmode()
|
||||
#define EARLY_DEBUG_INIT() \
|
||||
do { udbg_putc = call_rtas_display_status_delay; } while(0)
|
||||
#endif
|
||||
|
||||
int have_of = 1;
|
||||
int boot_cpuid = 0;
|
||||
int boot_cpuid_phys = 0;
|
||||
@@ -237,11 +211,8 @@ void __init early_setup(unsigned long dt_ptr)
|
||||
struct paca_struct *lpaca = get_paca();
|
||||
static struct machdep_calls **mach;
|
||||
|
||||
/*
|
||||
* Enable early debugging if any specified (see top of
|
||||
* this file)
|
||||
*/
|
||||
EARLY_DEBUG_INIT();
|
||||
/* Enable early debugging if any specified (see udbg.h) */
|
||||
udbg_early_init();
|
||||
|
||||
DBG(" -> early_setup()\n");
|
||||
|
||||
@@ -684,3 +655,28 @@ void cpu_die(void)
|
||||
if (ppc_md.cpu_die)
|
||||
ppc_md.cpu_die();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
void __init setup_per_cpu_areas(void)
|
||||
{
|
||||
int i;
|
||||
unsigned long size;
|
||||
char *ptr;
|
||||
|
||||
/* Copy section for each CPU (we discard the original) */
|
||||
size = ALIGN(__per_cpu_end - __per_cpu_start, SMP_CACHE_BYTES);
|
||||
#ifdef CONFIG_MODULES
|
||||
if (size < PERCPU_ENOUGH_ROOM)
|
||||
size = PERCPU_ENOUGH_ROOM;
|
||||
#endif
|
||||
|
||||
for_each_cpu(i) {
|
||||
ptr = alloc_bootmem_node(NODE_DATA(cpu_to_node(i)), size);
|
||||
if (!ptr)
|
||||
panic("Cannot allocate cpu data for CPU %d\n", i);
|
||||
|
||||
paca[i].data_offset = ptr - __per_cpu_start;
|
||||
memcpy(ptr, __per_cpu_start, __per_cpu_end - __per_cpu_start);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -15,11 +15,36 @@
|
||||
#include <linux/sched.h>
|
||||
#include <linux/console.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/udbg.h>
|
||||
|
||||
void (*udbg_putc)(char c);
|
||||
int (*udbg_getc)(void);
|
||||
int (*udbg_getc_poll)(void);
|
||||
|
||||
/*
|
||||
* Early debugging facilities. You can enable _one_ of these via .config,
|
||||
* if you do so your kernel _will not boot_ on anything else. Be careful.
|
||||
*/
|
||||
void __init udbg_early_init(void)
|
||||
{
|
||||
#if defined(CONFIG_PPC_EARLY_DEBUG_LPAR)
|
||||
/* For LPAR machines that have an HVC console on vterm 0 */
|
||||
udbg_init_debug_lpar();
|
||||
#elif defined(CONFIG_PPC_EARLY_DEBUG_G5)
|
||||
/* For use on Apple G5 machines */
|
||||
udbg_init_pmac_realmode();
|
||||
#elif defined(CONFIG_PPC_EARLY_DEBUG_RTAS)
|
||||
/* RTAS panel debug */
|
||||
udbg_init_rtas();
|
||||
#elif defined(CONFIG_PPC_EARLY_DEBUG_MAPLE)
|
||||
/* Maple real mode debug */
|
||||
udbg_init_maple_realmode();
|
||||
#elif defined(CONFIG_PPC_EARLY_DEBUG_ISERIES)
|
||||
/* For iSeries - hit Ctrl-x Ctrl-x to see the output */
|
||||
udbg_init_iseries();
|
||||
#endif
|
||||
}
|
||||
|
||||
/* udbg library, used by xmon et al */
|
||||
void udbg_puts(const char *s)
|
||||
{
|
||||
|
||||
@@ -155,7 +155,7 @@ void udbg_maple_real_putc(unsigned char c)
|
||||
}
|
||||
}
|
||||
|
||||
void udbg_init_maple_realmode(void)
|
||||
void __init udbg_init_maple_realmode(void)
|
||||
{
|
||||
udbg_comport = (volatile struct NS16550 __iomem *)0xf40003f8;
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
vdso32.lds
|
||||
@@ -0,0 +1 @@
|
||||
vdso64.lds
|
||||
@@ -0,0 +1,26 @@
|
||||
menu "Platform support"
|
||||
depends on PPC_83xx
|
||||
|
||||
choice
|
||||
prompt "Machine Type"
|
||||
default MPC834x_SYS
|
||||
|
||||
config MPC834x_SYS
|
||||
bool "Freescale MPC834x SYS"
|
||||
help
|
||||
This option enables support for the MPC 834x SYS evaluation board.
|
||||
|
||||
Be aware that PCI buses can only function when SYS board is plugged
|
||||
into the PIB (Platform IO Board) board from Freescale which provide
|
||||
3 PCI slots. The PIBs PCI initialization is the bootloader's
|
||||
responsiblilty.
|
||||
|
||||
endchoice
|
||||
|
||||
config MPC834x
|
||||
bool
|
||||
select PPC_UDBG_16550
|
||||
select PPC_INDIRECT_PCI
|
||||
default y if MPC834x_SYS
|
||||
|
||||
endmenu
|
||||
@@ -0,0 +1,4 @@
|
||||
#
|
||||
# Makefile for the PowerPC 83xx linux kernel.
|
||||
#
|
||||
obj-$(CONFIG_MPC834x_SYS) += mpc834x_sys.o pci.o
|
||||
@@ -7,6 +7,7 @@ endif
|
||||
endif
|
||||
obj-$(CONFIG_PPC_CHRP) += chrp/
|
||||
obj-$(CONFIG_4xx) += 4xx/
|
||||
obj-$(CONFIG_PPC_83xx) += 83xx/
|
||||
obj-$(CONFIG_85xx) += 85xx/
|
||||
obj-$(CONFIG_PPC_PSERIES) += pseries/
|
||||
obj-$(CONFIG_PPC_ISERIES) += iseries/
|
||||
|
||||
@@ -169,11 +169,33 @@ static inline void save_mfc_cntl(struct spu_state *csa, struct spu *spu)
|
||||
struct spu_priv2 __iomem *priv2 = spu->priv2;
|
||||
|
||||
/* Save, Step 8:
|
||||
* Read and save MFC_CNTL[Ss].
|
||||
* Suspend DMA and save MFC_CNTL.
|
||||
*/
|
||||
if (csa) {
|
||||
csa->priv2.mfc_control_RW = in_be64(&priv2->mfc_control_RW) &
|
||||
MFC_CNTL_SUSPEND_DMA_STATUS_MASK;
|
||||
switch (in_be64(&priv2->mfc_control_RW) &
|
||||
MFC_CNTL_SUSPEND_DMA_STATUS_MASK) {
|
||||
case MFC_CNTL_SUSPEND_IN_PROGRESS:
|
||||
POLL_WHILE_FALSE((in_be64(&priv2->mfc_control_RW) &
|
||||
MFC_CNTL_SUSPEND_DMA_STATUS_MASK) ==
|
||||
MFC_CNTL_SUSPEND_COMPLETE);
|
||||
/* fall through */
|
||||
case MFC_CNTL_SUSPEND_COMPLETE:
|
||||
if (csa) {
|
||||
csa->priv2.mfc_control_RW =
|
||||
in_be64(&priv2->mfc_control_RW) |
|
||||
MFC_CNTL_SUSPEND_DMA_QUEUE;
|
||||
}
|
||||
break;
|
||||
case MFC_CNTL_NORMAL_DMA_QUEUE_OPERATION:
|
||||
out_be64(&priv2->mfc_control_RW, MFC_CNTL_SUSPEND_DMA_QUEUE);
|
||||
POLL_WHILE_FALSE((in_be64(&priv2->mfc_control_RW) &
|
||||
MFC_CNTL_SUSPEND_DMA_STATUS_MASK) ==
|
||||
MFC_CNTL_SUSPEND_COMPLETE);
|
||||
if (csa) {
|
||||
csa->priv2.mfc_control_RW =
|
||||
in_be64(&priv2->mfc_control_RW) &
|
||||
~MFC_CNTL_SUSPEND_DMA_QUEUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,6 +259,8 @@ static inline void save_mfc_decr(struct spu_state *csa, struct spu *spu)
|
||||
eieio();
|
||||
csa->spu_chnldata_RW[7] = in_be64(&priv2->spu_chnldata_RW);
|
||||
eieio();
|
||||
} else {
|
||||
csa->priv2.mfc_control_RW &= ~MFC_CNTL_DECREMENTER_RUNNING;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user