Commit c463be35 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc

* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (22 commits)
  [POWERPC] Fix large hash table allocation on Cell blades
  [POWERPC] Export empty_zero_page
  [POWERPC] Fix viodasd driver with scatterlist debug
  [POWERPC] Fix arch/powerpc/platforms/powermac/pic.c when !CONFIG_ADB_PMU
  [POWERPC] Fix drivers/macintosh/mediabay.c when !CONFIG_ADB_PMU
  [POWERPC] Fix undefined pmu_sys_suspended compilation error
  [POWERPC] Fix build of modular drivers/macintosh/apm_emu.c
  [POWERPC] Fix sleep on some powerbooks
  [POWERPC] Fix bogus test for unassigned PCI resources
  [POWERPC] Fix zImage-dtb.initrd build error
  [POWERPC] Add __ucmpdi2 for 64-bit comparisons in 32-bit kernels
  [POWERPC] spufs: fix rescheduling of non-runnable contexts
  [POWERPC] spufs: don't (ab)use SCHED_IDLE
  [POWERPC] QE: Make qe_get_firmware_info reentrant
  [POWERPC] 83xx: Make 83xx perfmon support selectable
  [PPC] 8xx: swap bug-fix
  [POWERPC] 85xx: sbc8548 - Fix incorrect PCI-X and PCI interrupt map
  [POWERPC] QE: Fix QE firmware uploading limit
  [POWERPC] 8xx: Fix wrapper platform for adder875, and combine defconfigs.
  [POWERPC] 8xx: fix swap
  ...
parents 609eb39c 31bf1119
...@@ -155,7 +155,7 @@ all: zImage ...@@ -155,7 +155,7 @@ all: zImage
CPPFLAGS_vmlinux.lds := -Upowerpc CPPFLAGS_vmlinux.lds := -Upowerpc
BOOT_TARGETS = zImage zImage.initrd uImage treeImage.% cuImage.% BOOT_TARGETS = zImage zImage.initrd uImage zImage% dtbImage% treeImage.% cuImage.%
PHONY += $(BOOT_TARGETS) PHONY += $(BOOT_TARGETS)
......
...@@ -186,7 +186,7 @@ quiet_cmd_wrap = WRAP $@ ...@@ -186,7 +186,7 @@ quiet_cmd_wrap = WRAP $@
image-$(CONFIG_PPC_PSERIES) += zImage.pseries image-$(CONFIG_PPC_PSERIES) += zImage.pseries
image-$(CONFIG_PPC_MAPLE) += zImage.pseries image-$(CONFIG_PPC_MAPLE) += zImage.pseries
image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries
image-$(CONFIG_PPC_PS3) += zImage-dtb.ps3 image-$(CONFIG_PPC_PS3) += dtbImage.ps3
image-$(CONFIG_PPC_CELLEB) += zImage.pseries image-$(CONFIG_PPC_CELLEB) += zImage.pseries
image-$(CONFIG_PPC_CHRP) += zImage.chrp image-$(CONFIG_PPC_CHRP) += zImage.chrp
image-$(CONFIG_PPC_EFIKA) += zImage.chrp image-$(CONFIG_PPC_EFIKA) += zImage.chrp
...@@ -205,7 +205,7 @@ image-$(CONFIG_DEFAULT_UIMAGE) += uImage ...@@ -205,7 +205,7 @@ image-$(CONFIG_DEFAULT_UIMAGE) += uImage
# #
# Board ports in arch/powerpc/platform/40x/Kconfig # Board ports in arch/powerpc/platform/40x/Kconfig
image-$(CONFIG_EP405) += zImage-dtb.ep405 image-$(CONFIG_EP405) += dtbImage.ep405
image-$(CONFIG_WALNUT) += treeImage.walnut image-$(CONFIG_WALNUT) += treeImage.walnut
# Board ports in arch/powerpc/platform/44x/Kconfig # Board ports in arch/powerpc/platform/44x/Kconfig
...@@ -220,9 +220,9 @@ image-$(CONFIG_WARP) += cuImage.warp ...@@ -220,9 +220,9 @@ image-$(CONFIG_WARP) += cuImage.warp
# Board ports in arch/powerpc/platform/8xx/Kconfig # Board ports in arch/powerpc/platform/8xx/Kconfig
image-$(CONFIG_PPC_MPC86XADS) += cuImage.mpc866ads image-$(CONFIG_PPC_MPC86XADS) += cuImage.mpc866ads
image-$(CONFIG_PPC_MPC885ADS) += cuImage.mpc885ads image-$(CONFIG_PPC_MPC885ADS) += cuImage.mpc885ads
image-$(CONFIG_PPC_EP88XC) += zImage-dtb.ep88xc image-$(CONFIG_PPC_EP88XC) += dtbImage.ep88xc
image-$(CONFIG_PPC_ADDER875) += cuImage.adder875-uboot \ image-$(CONFIG_PPC_ADDER875) += cuImage.adder875-uboot \
zImage-dtb.adder875-redboot dtbImage.adder875-redboot
# Board ports in arch/powerpc/platform/52xx/Kconfig # Board ports in arch/powerpc/platform/52xx/Kconfig
image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b
...@@ -230,7 +230,7 @@ image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b ...@@ -230,7 +230,7 @@ image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b
# Board ports in arch/powerpc/platform/82xx/Kconfig # Board ports in arch/powerpc/platform/82xx/Kconfig
image-$(CONFIG_MPC8272_ADS) += cuImage.mpc8272ads image-$(CONFIG_MPC8272_ADS) += cuImage.mpc8272ads
image-$(CONFIG_PQ2FADS) += cuImage.pq2fads image-$(CONFIG_PQ2FADS) += cuImage.pq2fads
image-$(CONFIG_EP8248E) += zImage-dtb.ep8248e image-$(CONFIG_EP8248E) += dtbImage.ep8248e
# Board ports in arch/powerpc/platform/83xx/Kconfig # Board ports in arch/powerpc/platform/83xx/Kconfig
image-$(CONFIG_MPC832x_MDS) += cuImage.mpc832x_mds image-$(CONFIG_MPC832x_MDS) += cuImage.mpc832x_mds
...@@ -268,7 +268,8 @@ endif ...@@ -268,7 +268,8 @@ endif
initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-)) initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-))
initrd-y := $(patsubst zImage%, zImage.initrd%, \ initrd-y := $(patsubst zImage%, zImage.initrd%, \
$(patsubst treeImage%, treeImage.initrd%, $(image-y))) $(patsubst dtbImage%, dtbImage.initrd%, \
$(patsubst treeImage%, treeImage.initrd%, $(image-y))))
initrd-y := $(filter-out $(image-y), $(initrd-y)) initrd-y := $(filter-out $(image-y), $(initrd-y))
targets += $(image-y) $(initrd-y) targets += $(image-y) $(initrd-y)
...@@ -283,10 +284,11 @@ $(obj)/zImage.initrd.%: vmlinux $(wrapperbits) ...@@ -283,10 +284,11 @@ $(obj)/zImage.initrd.%: vmlinux $(wrapperbits)
$(obj)/zImage.%: vmlinux $(wrapperbits) $(obj)/zImage.%: vmlinux $(wrapperbits)
$(call if_changed,wrap,$*) $(call if_changed,wrap,$*)
$(obj)/zImage-dtb.initrd.%: vmlinux $(wrapperbits) $(dtstree)/%.dts # dtbImage% - a dtbImage is a zImage with an embedded device tree blob
$(obj)/dtbImage.initrd.%: vmlinux $(wrapperbits) $(dtstree)/%.dts
$(call if_changed,wrap,$*,$(dtstree)/$*.dts,,$(obj)/ramdisk.image.gz) $(call if_changed,wrap,$*,$(dtstree)/$*.dts,,$(obj)/ramdisk.image.gz)
$(obj)/zImage-dtb.%: vmlinux $(wrapperbits) $(dtstree)/%.dts $(obj)/dtbImage.%: vmlinux $(wrapperbits) $(dtstree)/%.dts
$(call if_changed,wrap,$*,$(dtstree)/$*.dts) $(call if_changed,wrap,$*,$(dtstree)/$*.dts)
# This cannot be in the root of $(src) as the zImage rule always adds a $(obj) # This cannot be in the root of $(src) as the zImage rule always adds a $(obj)
......
...@@ -47,6 +47,72 @@ memory { ...@@ -47,6 +47,72 @@ memory {
reg = <0x00000000 0x20000000>; // 512MB at 0 reg = <0x00000000 0x20000000>; // 512MB at 0
}; };
localbus@e0005000 {
#address-cells = <2>;
#size-cells = <1>;
compatible = "fsl,mpc8377-elbc", "fsl,elbc", "simple-bus";
reg = <0xe0005000 0x1000>;
interrupts = <77 0x8>;
interrupt-parent = <&ipic>;
// booting from NOR flash
ranges = <0 0x0 0xfe000000 0x02000000
1 0x0 0xf8000000 0x00008000
3 0x0 0xe0600000 0x00008000>;
flash@0,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "cfi-flash";
reg = <0 0x0 0x2000000>;
bank-width = <2>;
device-width = <1>;
u-boot@0 {
reg = <0x0 0x100000>;
read-only;
};
fs@100000 {
reg = <0x100000 0x800000>;
};
kernel@1d00000 {
reg = <0x1d00000 0x200000>;
};
dtb@1f00000 {
reg = <0x1f00000 0x100000>;
};
};
bcsr@1,0 {
reg = <1 0x0 0x8000>;
compatible = "fsl,mpc837xmds-bcsr";
};
nand@3,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "fsl,mpc8377-fcm-nand",
"fsl,elbc-fcm-nand";
reg = <3 0x0 0x8000>;
u-boot@0 {
reg = <0x0 0x100000>;
read-only;
};
kernel@100000 {
reg = <0x100000 0x300000>;
};
fs@400000 {
reg = <0x400000 0x1c00000>;
};
};
};
soc@e0000000 { soc@e0000000 {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
...@@ -91,7 +157,6 @@ spi@7000 { ...@@ -91,7 +157,6 @@ spi@7000 {
mode = "cpu"; mode = "cpu";
}; };
/* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
usb@23000 { usb@23000 {
compatible = "fsl-usb2-dr"; compatible = "fsl-usb2-dr";
reg = <0x23000 0x1000>; reg = <0x23000 0x1000>;
...@@ -99,7 +164,8 @@ usb@23000 { ...@@ -99,7 +164,8 @@ usb@23000 {
#size-cells = <0>; #size-cells = <0>;
interrupt-parent = <&ipic>; interrupt-parent = <&ipic>;
interrupts = <38 0x8>; interrupts = <38 0x8>;
phy_type = "utmi_wide"; dr_mode = "host";
phy_type = "ulpi";
}; };
mdio@24520 { mdio@24520 {
......
...@@ -47,6 +47,72 @@ memory { ...@@ -47,6 +47,72 @@ memory {
reg = <0x00000000 0x20000000>; // 512MB at 0 reg = <0x00000000 0x20000000>; // 512MB at 0
}; };
localbus@e0005000 {
#address-cells = <2>;
#size-cells = <1>;
compatible = "fsl,mpc8378-elbc", "fsl,elbc", "simple-bus";
reg = <0xe0005000 0x1000>;
interrupts = <77 0x8>;
interrupt-parent = <&ipic>;
// booting from NOR flash
ranges = <0 0x0 0xfe000000 0x02000000
1 0x0 0xf8000000 0x00008000
3 0x0 0xe0600000 0x00008000>;
flash@0,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "cfi-flash";
reg = <0 0x0 0x2000000>;
bank-width = <2>;
device-width = <1>;
u-boot@0 {
reg = <0x0 0x100000>;
read-only;
};
fs@100000 {
reg = <0x100000 0x800000>;
};
kernel@1d00000 {
reg = <0x1d00000 0x200000>;
};
dtb@1f00000 {
reg = <0x1f00000 0x100000>;
};
};
bcsr@1,0 {
reg = <1 0x0 0x8000>;
compatible = "fsl,mpc837xmds-bcsr";
};
nand@3,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "fsl,mpc8378-fcm-nand",
"fsl,elbc-fcm-nand";
reg = <3 0x0 0x8000>;
u-boot@0 {
reg = <0x0 0x100000>;
read-only;
};
kernel@100000 {
reg = <0x100000 0x300000>;
};
fs@400000 {
reg = <0x400000 0x1c00000>;
};
};
};
soc@e0000000 { soc@e0000000 {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
...@@ -91,7 +157,6 @@ spi@7000 { ...@@ -91,7 +157,6 @@ spi@7000 {
mode = "cpu"; mode = "cpu";
}; };
/* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
usb@23000 { usb@23000 {
compatible = "fsl-usb2-dr"; compatible = "fsl-usb2-dr";
reg = <0x23000 0x1000>; reg = <0x23000 0x1000>;
...@@ -99,7 +164,8 @@ usb@23000 { ...@@ -99,7 +164,8 @@ usb@23000 {
#size-cells = <0>; #size-cells = <0>;
interrupt-parent = <&ipic>; interrupt-parent = <&ipic>;
interrupts = <38 0x8>; interrupts = <38 0x8>;
phy_type = "utmi_wide"; dr_mode = "host";
phy_type = "ulpi";
}; };
mdio@24520 { mdio@24520 {
......
...@@ -47,6 +47,72 @@ memory { ...@@ -47,6 +47,72 @@ memory {
reg = <0x00000000 0x20000000>; // 512MB at 0 reg = <0x00000000 0x20000000>; // 512MB at 0
}; };
localbus@e0005000 {
#address-cells = <2>;
#size-cells = <1>;
compatible = "fsl,mpc8379-elbc", "fsl,elbc", "simple-bus";
reg = <0xe0005000 0x1000>;
interrupts = <77 0x8>;
interrupt-parent = <&ipic>;
// booting from NOR flash
ranges = <0 0x0 0xfe000000 0x02000000
1 0x0 0xf8000000 0x00008000
3 0x0 0xe0600000 0x00008000>;
flash@0,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "cfi-flash";
reg = <0 0x0 0x2000000>;
bank-width = <2>;
device-width = <1>;
u-boot@0 {
reg = <0x0 0x100000>;
read-only;
};
fs@100000 {
reg = <0x100000 0x800000>;
};
kernel@1d00000 {
reg = <0x1d00000 0x200000>;
};
dtb@1f00000 {
reg = <0x1f00000 0x100000>;
};
};
bcsr@1,0 {
reg = <1 0x0 0x8000>;
compatible = "fsl,mpc837xmds-bcsr";
};
nand@3,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "fsl,mpc8379-fcm-nand",
"fsl,elbc-fcm-nand";
reg = <3 0x0 0x8000>;
u-boot@0 {
reg = <0x0 0x100000>;
read-only;
};
kernel@100000 {
reg = <0x100000 0x300000>;
};
fs@400000 {
reg = <0x400000 0x1c00000>;
};
};
};
soc@e0000000 { soc@e0000000 {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
...@@ -91,7 +157,6 @@ spi@7000 { ...@@ -91,7 +157,6 @@ spi@7000 {
mode = "cpu"; mode = "cpu";
}; };
/* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
usb@23000 { usb@23000 {
compatible = "fsl-usb2-dr"; compatible = "fsl-usb2-dr";
reg = <0x23000 0x1000>; reg = <0x23000 0x1000>;
...@@ -99,7 +164,8 @@ usb@23000 { ...@@ -99,7 +164,8 @@ usb@23000 {
#size-cells = <0>; #size-cells = <0>;
interrupt-parent = <&ipic>; interrupt-parent = <&ipic>;
interrupts = <38 0x8>; interrupts = <38 0x8>;
phy_type = "utmi_wide"; dr_mode = "host";
phy_type = "ulpi";
}; };
mdio@24520 { mdio@24520 {
......
...@@ -184,11 +184,17 @@ pci0: pci@e0008000 { ...@@ -184,11 +184,17 @@ pci0: pci@e0008000 {
cell-index = <0>; cell-index = <0>;
interrupt-map-mask = <0xf800 0x0 0x0 0x7>; interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
interrupt-map = < interrupt-map = <
/* IDSEL 0x01 (PCI-X slot) */ /* IDSEL 0x01 (PCI-X slot) @66MHz */
0x0800 0x0 0x0 0x1 &mpic 0x0 0x1 0x0800 0x0 0x0 0x1 &mpic 0x2 0x1
0x0800 0x0 0x0 0x2 &mpic 0x1 0x1 0x0800 0x0 0x0 0x2 &mpic 0x3 0x1
0x0800 0x0 0x0 0x3 &mpic 0x2 0x1 0x0800 0x0 0x0 0x3 &mpic 0x4 0x1
0x0800 0x0 0x0 0x4 &mpic 0x3 0x1>; 0x0800 0x0 0x0 0x4 &mpic 0x1 0x1
/* IDSEL 0x11 (PCI, 3.3V 32bit) @33MHz */
0x8800 0x0 0x0 0x1 &mpic 0x2 0x1
0x8800 0x0 0x0 0x2 &mpic 0x3 0x1
0x8800 0x0 0x0 0x3 &mpic 0x4 0x1
0x8800 0x0 0x0 0x4 &mpic 0x1 0x1>;
interrupt-parent = <&mpic>; interrupt-parent = <&mpic>;
interrupts = <0x18 0x2>; interrupts = <0x18 0x2>;
......
...@@ -191,10 +191,14 @@ ps3) ...@@ -191,10 +191,14 @@ ps3)
ksection=.kernel:vmlinux.bin ksection=.kernel:vmlinux.bin
isection=.kernel:initrd isection=.kernel:initrd
;; ;;
ep88xc|ep405|redboot*|ep8248e) ep88xc|ep405|ep8248e)
platformo="$object/fixed-head.o $object/$platform.o" platformo="$object/fixed-head.o $object/$platform.o"
binary=y binary=y
;; ;;
adder875-redboot)
platformo="$object/fixed-head.o $object/redboot-8xx.o"
binary=y
;;
esac esac
vmz="$tmpdir/`basename \"$kernel\"`.$ext" vmz="$tmpdir/`basename \"$kernel\"`.$ext"
......
This diff is collapsed.
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.24-rc6 # Linux kernel version: 2.6.25-rc2
# Thu Jan 17 16:17:38 2008 # Wed Feb 20 12:26:07 2008
# #
# CONFIG_PPC64 is not set # CONFIG_PPC64 is not set
...@@ -26,6 +26,7 @@ CONFIG_GENERIC_TIME=y ...@@ -26,6 +26,7 @@ CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_HARDIRQS=y
# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
CONFIG_IRQ_PER_CPU=y CONFIG_IRQ_PER_CPU=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_ARCH_HAS_ILOG2_U32=y CONFIG_ARCH_HAS_ILOG2_U32=y
...@@ -64,17 +65,18 @@ CONFIG_SYSVIPC_SYSCTL=y ...@@ -64,17 +65,18 @@ CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set # CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set # CONFIG_TASKSTATS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_AUDIT is not set # CONFIG_AUDIT is not set
# CONFIG_IKCONFIG is not set # CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=14 CONFIG_LOG_BUF_SHIFT=14
# CONFIG_CGROUPS is not set # CONFIG_CGROUPS is not set
CONFIG_GROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y
CONFIG_FAIR_USER_SCHED=y # CONFIG_RT_GROUP_SCHED is not set
# CONFIG_FAIR_CGROUP_SCHED is not set CONFIG_USER_SCHED=y
# CONFIG_CGROUP_SCHED is not set
CONFIG_SYSFS_DEPRECATED=y CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set # CONFIG_RELAY is not set
# CONFIG_NAMESPACES is not set
# CONFIG_BLK_DEV_INITRD is not set # CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y CONFIG_SYSCTL=y
...@@ -87,11 +89,13 @@ CONFIG_HOTPLUG=y ...@@ -87,11 +89,13 @@ CONFIG_HOTPLUG=y
CONFIG_PRINTK=y CONFIG_PRINTK=y
CONFIG_BUG=y CONFIG_BUG=y
# CONFIG_ELF_CORE is not set # CONFIG_ELF_CORE is not set
CONFIG_COMPAT_BRK=y
# CONFIG_BASE_FULL is not set # CONFIG_BASE_FULL is not set
# CONFIG_FUTEX is not set # CONFIG_FUTEX is not set
CONFIG_ANON_INODES=y CONFIG_ANON_INODES=y
CONFIG_EPOLL=y CONFIG_EPOLL=y
CONFIG_SIGNALFD=y CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y CONFIG_EVENTFD=y
CONFIG_SHMEM=y CONFIG_SHMEM=y
# CONFIG_VM_EVENT_COUNTERS is not set # CONFIG_VM_EVENT_COUNTERS is not set
...@@ -99,6 +103,12 @@ CONFIG_SLUB_DEBUG=y ...@@ -99,6 +103,12 @@ CONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not set # CONFIG_SLAB is not set
CONFIG_SLUB=y CONFIG_SLUB=y
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
# CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y
CONFIG_HAVE_KPROBES=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_SLABINFO=y
# CONFIG_TINY_SHMEM is not set # CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=1 CONFIG_BASE_SMALL=1
# CONFIG_MODULES is not set # CONFIG_MODULES is not set
...@@ -120,12 +130,14 @@ CONFIG_DEFAULT_DEADLINE=y ...@@ -120,12 +130,14 @@ CONFIG_DEFAULT_DEADLINE=y
# CONFIG_DEFAULT_CFQ is not set # CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not set # CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="deadline" CONFIG_DEFAULT_IOSCHED="deadline"
CONFIG_CLASSIC_RCU=y
# CONFIG_PREEMPT_RCU is not set
# #
# Platform support # Platform support
# #
# CONFIG_PPC_MPC52xx is not set # CONFIG_PPC_MPC512x is not set
# CONFIG_PPC_MPC5200 is not set # CONFIG_PPC_MPC5121 is not set
# CONFIG_PPC_CELL is not set # CONFIG_PPC_CELL is not set
# CONFIG_PPC_CELL_NATIVE is not set # CONFIG_PPC_CELL_NATIVE is not set
CONFIG_CPM1=y CONFIG_CPM1=y
...@@ -150,6 +162,7 @@ CONFIG_NO_UCODE_PATCH=y ...@@ -150,6 +162,7 @@ CONFIG_NO_UCODE_PATCH=y
# CONFIG_I2C_SPI_UCODE_PATCH is not set # CONFIG_I2C_SPI_UCODE_PATCH is not set
# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set # CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set
# CONFIG_PQ2ADS is not set # CONFIG_PQ2ADS is not set
# CONFIG_IPIC is not set
# CONFIG_MPIC is not set # CONFIG_MPIC is not set
# CONFIG_MPIC_WEIRD is not set # CONFIG_MPIC_WEIRD is not set
# CONFIG_PPC_I8259 is not set # CONFIG_PPC_I8259 is not set
...@@ -160,7 +173,6 @@ CONFIG_NO_UCODE_PATCH=y ...@@ -160,7 +173,6 @@ CONFIG_NO_UCODE_PATCH=y
# CONFIG_PPC_INDIRECT_IO is not set # CONFIG_PPC_INDIRECT_IO is not set
# CONFIG_GENERIC_IOMAP is not set # CONFIG_GENERIC_IOMAP is not set
# CONFIG_CPU_FREQ is not set # CONFIG_CPU_FREQ is not set
# CONFIG_CPM2 is not set
CONFIG_PPC_CPM_NEW_BINDING=y CONFIG_PPC_CPM_NEW_BINDING=y
# CONFIG_FSL_ULI1575 is not set # CONFIG_FSL_ULI1575 is not set
CONFIG_CPM=y CONFIG_CPM=y
...@@ -178,14 +190,19 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y ...@@ -178,14 +190,19 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
# CONFIG_HZ_300 is not set # CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y CONFIG_HZ_1000=y
CONFIG_HZ=1000 CONFIG_HZ=1000
# CONFIG_SCHED_HRTICK is not set
CONFIG_PREEMPT_NONE=y CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
CONFIG_RCU_TRACE=y
CONFIG_BINFMT_ELF=y CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set # CONFIG_BINFMT_MISC is not set
# CONFIG_MATH_EMULATION is not set # CONFIG_MATH_EMULATION is not set
# CONFIG_8XX_MINIMAL_FPEMU is not set # CONFIG_8XX_MINIMAL_FPEMU is not set
# CONFIG_IOMMU_HELPER is not set
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_ARCH_HAS_WALK_MEMORY=y
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y
...@@ -204,11 +221,7 @@ CONFIG_VIRT_TO_BUS=y ...@@ -204,11 +221,7 @@ CONFIG_VIRT_TO_BUS=y
# CONFIG_PROC_DEVICETREE is not set # CONFIG_PROC_DEVICETREE is not set
# CONFIG_CMDLINE_BOOL is not set # CONFIG_CMDLINE_BOOL is not set
# CONFIG_PM is not set # CONFIG_PM is not set
CONFIG_SUSPEND_UP_POSSIBLE=y
CONFIG_HIBERNATION_UP_POSSIBLE=y
# CONFIG_SECCOMP is not set # CONFIG_SECCOMP is not set
CONFIG_WANT_DEVICE_TREE=y
CONFIG_DEVICE_TREE="adder875-redboot.dts"
CONFIG_ISA_DMA_API=y CONFIG_ISA_DMA_API=y
# #
...@@ -305,6 +318,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" ...@@ -305,6 +318,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# #
# CONFIG_NET_PKTGEN is not set # CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set # CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set # CONFIG_IRDA is not set
# CONFIG_BT is not set # CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set # CONFIG_AF_RXRPC is not set
...@@ -411,6 +425,7 @@ CONFIG_OF_DEVICE=y ...@@ -411,6 +425,7 @@ CONFIG_OF_DEVICE=y
# CONFIG_PARPORT is not set # CONFIG_PARPORT is not set
# CONFIG_BLK_DEV is not set # CONFIG_BLK_DEV is not set
# CONFIG_MISC_DEVICES is not set # CONFIG_MISC_DEVICES is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set # CONFIG_IDE is not set
# #
...@@ -445,6 +460,7 @@ CONFIG_DAVICOM_PHY=y ...@@ -445,6 +460,7 @@ CONFIG_DAVICOM_PHY=y
# CONFIG_SMSC_PHY is not set # CONFIG_SMSC_PHY is not set
# CONFIG_BROADCOM_PHY is not set # CONFIG_BROADCOM_PHY is not set
# CONFIG_ICPLUS_PHY is not set # CONFIG_ICPLUS_PHY is not set
# CONFIG_REALTEK_PHY is not set
# CONFIG_FIXED_PHY is not set # CONFIG_FIXED_PHY is not set
# CONFIG_MDIO_BITBANG is not set # CONFIG_MDIO_BITBANG is not set
CONFIG_NET_ETHERNET=y CONFIG_NET_ETHERNET=y
...@@ -469,7 +485,6 @@ CONFIG_FS_ENET_MDIO_FEC=y ...@@ -469,7 +485,6 @@ CONFIG_FS_ENET_MDIO_FEC=y
# CONFIG_WAN is not set # CONFIG_WAN is not set
# CONFIG_PPP is not set # CONFIG_PPP is not set
# CONFIG_SLIP is not set # CONFIG_SLIP is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set # CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set # CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set # CONFIG_NET_POLL_CONTROLLER is not set
...@@ -574,6 +589,7 @@ CONFIG_GEN_RTC=y ...@@ -574,6 +589,7 @@ CONFIG_GEN_RTC=y
# CONFIG_W1 is not set # CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set # CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
CONFIG_THERMAL=y
# CONFIG_WATCHDOG is not set # CONFIG_WATCHDOG is not set
# #
...@@ -614,6 +630,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y ...@@ -614,6 +630,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
# CONFIG_HID_SUPPORT is not set # CONFIG_HID_SUPPORT is not set
# CONFIG_USB_SUPPORT is not set # CONFIG_USB_SUPPORT is not set
# CONFIG_MMC is not set # CONFIG_MMC is not set
# CONFIG_MEMSTICK is not set
# CONFIG_NEW_LEDS is not set # CONFIG_NEW_LEDS is not set
# CONFIG_EDAC is not set # CONFIG_EDAC is not set
# CONFIG_RTC_CLASS is not set # CONFIG_RTC_CLASS is not set
...@@ -635,11 +652,9 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y ...@@ -635,11 +652,9 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
# CONFIG_XFS_FS is not set # CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set # CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set # CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set # CONFIG_DNOTIFY is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_INOTIFY is not set # CONFIG_INOTIFY is not set
# CONFIG_QUOTA is not set # CONFIG_QUOTA is not set
# CONFIG_DNOTIFY is not set
# CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set # CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set # CONFIG_FUSE_FS is not set
...@@ -682,8 +697,10 @@ CONFIG_TMPFS=y ...@@ -682,8 +697,10 @@ CONFIG_TMPFS=y
# CONFIG_JFFS2_FS is not set # CONFIG_JFFS2_FS is not set
CONFIG_CRAMFS=y CONFIG_CRAMFS=y
# CONFIG_VXFS_FS is not set # CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_HPFS_FS is not set # CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set # CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_SYSV_FS is not set # CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set # CONFIG_UFS_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NETWORK_FILESYSTEMS=y
...@@ -730,7 +747,6 @@ CONFIG_MSDOS_PARTITION=y ...@@ -730,7 +747,6 @@ CONFIG_MSDOS_PARTITION=y
# CONFIG_SYSV68_PARTITION is not set # CONFIG_SYSV68_PARTITION is not set
# CONFIG_NLS is not set # CONFIG_NLS is not set
# CONFIG_DLM is not set # CONFIG_DLM is not set
# CONFIG_UCC_SLOW is not set
# #
# Library routines # Library routines
...@@ -745,9 +761,6 @@ CONFIG_ZLIB_INFLATE=y ...@@ -745,9 +761,6 @@ CONFIG_ZLIB_INFLATE=y
CONFIG_HAS_IOMEM=y CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y CONFIG_HAS_DMA=y
CONFIG_INSTRUMENTATION=y
# CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set
# #
# Kernel hacking # Kernel hacking
...@@ -757,7 +770,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y ...@@ -757,7 +770,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set # CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_DEBUG_FS is not set CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set # CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set # CONFIG_DEBUG_SHIRQ is not set
...@@ -766,6 +779,7 @@ CONFIG_SCHED_DEBUG=y ...@@ -766,6 +779,7 @@ CONFIG_SCHED_DEBUG=y
# CONFIG_SCHEDSTATS is not set # CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set # CONFIG_TIMER_STATS is not set
# CONFIG_SLUB_DEBUG_ON is not set # CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_SPINLOCK is not set # CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set # CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
...@@ -776,14 +790,15 @@ CONFIG_DEBUG_INFO=y ...@@ -776,14 +790,15 @@ CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set # CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_SG is not set
CONFIG_FORCED_INLINING=y
# CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_FAULT_INJECTION is not set # CONFIG_FAULT_INJECTION is not set
# CONFIG_SAMPLES is not set # CONFIG_SAMPLES is not set
# CONFIG_DEBUG_STACKOVERFLOW is not set # CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_DEBUGGER is not set # CONFIG_DEBUGGER is not set
# CONFIG_VIRQ_DEBUG is not set
# CONFIG_BDI_SWITCH is not set # CONFIG_BDI_SWITCH is not set
# CONFIG_PPC_EARLY_DEBUG is not set # CONFIG_PPC_EARLY_DEBUG is not set
......
...@@ -332,8 +332,18 @@ InstructionTLBMiss: ...@@ -332,8 +332,18 @@ InstructionTLBMiss:
mfspr r11, SPRN_MD_TWC /* ....and get the pte address */ mfspr r11, SPRN_MD_TWC /* ....and get the pte address */
lwz r10, 0(r11) /* Get the pte */ lwz r10, 0(r11) /* Get the pte */
#ifdef CONFIG_SWAP
/* do not set the _PAGE_ACCESSED bit of a non-present page */
andi. r11, r10, _PAGE_PRESENT
beq 4f
ori r10, r10, _PAGE_ACCESSED
mfspr r11, SPRN_MD_TWC /* get the pte address again */
stw r10, 0(r11)
4:
#else
ori r10, r10, _PAGE_ACCESSED ori r10, r10, _PAGE_ACCESSED
stw r10, 0(r11) stw r10, 0(r11)
#endif
/* The Linux PTE won't go exactly into the MMU TLB. /* The Linux PTE won't go exactly into the MMU TLB.
* Software indicator bits 21, 22 and 28 must be clear. * Software indicator bits 21, 22 and 28 must be clear.
...@@ -398,8 +408,17 @@ DataStoreTLBMiss: ...@@ -398,8 +408,17 @@ DataStoreTLBMiss:
DO_8xx_CPU6(0x3b80, r3) DO_8xx_CPU6(0x3b80, r3)
mtspr SPRN_MD_TWC, r11 mtspr SPRN_MD_TWC, r11
mfspr r11, SPRN_MD_TWC /* get the pte address again */ #ifdef CONFIG_SWAP
/* do not set the _PAGE_ACCESSED bit of a non-present page */
andi. r11, r10, _PAGE_PRESENT
beq 4f
ori r10, r10, _PAGE_ACCESSED ori r10, r10, _PAGE_ACCESSED
4:
/* and update pte in table */
#else
ori r10, r10, _PAGE_ACCESSED
#endif
mfspr r11, SPRN_MD_TWC /* get the pte address again */
stw r10, 0(r11) stw r10, 0(r11)
/* The Linux PTE won't go exactly into the MMU TLB. /* The Linux PTE won't go exactly into the MMU TLB.
...@@ -507,7 +526,16 @@ DataTLBError: ...@@ -507,7 +526,16 @@ DataTLBError:
/* Update 'changed', among others. /* Update 'changed', among others.
*/ */
#ifdef CONFIG_SWAP
ori r10, r10, _PAGE_DIRTY|_PAGE_HWWRITE
/* do not set the _PAGE_ACCESSED bit of a non-present page */
andi. r11, r10, _PAGE_PRESENT
beq 4f
ori r10, r10, _PAGE_ACCESSED
4:
#else
ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE
#endif
mfspr r11, SPRN_MD_TWC /* Get pte address again */ mfspr r11, SPRN_MD_TWC /* Get pte address again */
stw r10, 0(r11) /* and update pte in table */ stw r10, 0(r11) /* and update pte in table */
......
...@@ -785,6 +785,21 @@ _GLOBAL(__lshrdi3) ...@@ -785,6 +785,21 @@ _GLOBAL(__lshrdi3)
or r4,r4,r7 # LSW |= t2 or r4,r4,r7 # LSW |= t2
blr blr
/*
* 64-bit comparison: __ucmpdi2(u64 a, u64 b)
* Returns 0 if a < b, 1 if a == b, 2 if a > b.
*/
_GLOBAL(__ucmpdi2)
cmplw r3,r5
li r3,1
bne 1f
cmplw r4,r6
beqlr
1: li r3,0
bltlr
li r3,2
blr
_GLOBAL(abs) _GLOBAL(abs)
srawi r4,r3,31 srawi r4,r3,31
xor r3,r3,r4 xor r3,r3,r4
......
...@@ -748,7 +748,13 @@ static void __devinit pcibios_fixup_resources(struct pci_dev *dev) ...@@ -748,7 +748,13 @@ static void __devinit pcibios_fixup_resources(struct pci_dev *dev)
struct resource *res = dev->resource + i; struct resource *res = dev->resource + i;
if (!res->flags) if (!res->flags)
continue; continue;
if (res->end == 0xffffffff) { /* On platforms that have PPC_PCI_PROBE_ONLY set, we don't
* consider 0 as an unassigned BAR value. It's technically
* a valid value, but linux doesn't like it... so when we can
* re-assign things, we do so, but if we can't, we keep it
* around and hope for the best...
*/
if (res->start == 0 && !(ppc_pci_flags & PPC_PCI_PROBE_ONLY)) {
pr_debug("PCI:%s Resource %d %016llx-%016llx [%x] is unassigned\n", pr_debug("PCI:%s Resource %d %016llx-%016llx [%x] is unassigned\n",
pci_name(dev), i, pci_name(dev), i,
(unsigned long long)res->start, (unsigned long long)res->start,
......
...@@ -58,6 +58,7 @@ extern void program_check_exception(struct pt_regs *regs); ...@@ -58,6 +58,7 @@ extern void program_check_exception(struct pt_regs *regs);
extern void single_step_exception(struct pt_regs *regs); extern void single_step_exception(struct pt_regs *regs);
extern int sys_sigreturn(struct pt_regs *regs); extern int sys_sigreturn(struct pt_regs *regs);
EXPORT_SYMBOL(empty_zero_page);
EXPORT_SYMBOL(clear_pages); EXPORT_SYMBOL(clear_pages);
EXPORT_SYMBOL(copy_page); EXPORT_SYMBOL(copy_page);
EXPORT_SYMBOL(ISA_DMA_THRESHOLD); EXPORT_SYMBOL(ISA_DMA_THRESHOLD);
...@@ -149,6 +150,8 @@ long long __lshrdi3(long long, int); ...@@ -149,6 +150,8 @@ long long __lshrdi3(long long, int);
EXPORT_SYMBOL(__ashrdi3); EXPORT_SYMBOL(__ashrdi3);
EXPORT_SYMBOL(__ashldi3); EXPORT_SYMBOL(__ashldi3);
EXPORT_SYMBOL(__lshrdi3); EXPORT_SYMBOL(__lshrdi3);
int __ucmpdi2(unsigned long long, unsigned long long);
EXPORT_SYMBOL(__ucmpdi2);
#endif #endif
EXPORT_SYMBOL(memcpy); EXPORT_SYMBOL(memcpy);
......
...@@ -506,10 +506,10 @@ void __init htab_initialize(void) ...@@ -506,10 +506,10 @@ void __init htab_initialize(void)
} else { } else {
/* Find storage for the HPT. Must be contiguous in /* Find storage for the HPT. Must be contiguous in
* the absolute address space. On cell we want it to be * the absolute address space. On cell we want it to be
* in the first 1 Gig. * in the first 2 Gig so we can use it for IOMMU hacks.
*/ */
if (machine_is(cell)) if (machine_is(cell))
limit = 0x40000000; limit = 0x80000000;
else else
limit = 0; limit = 0;
......
...@@ -39,12 +39,9 @@ static int mpc837xmds_usb_cfg(void) ...@@ -39,12 +39,9 @@ static int mpc837xmds_usb_cfg(void)
if (ret) if (ret)
return ret; return ret;
/* Map BCSR area */ /* Map BCSR area */
np = of_find_node_by_name(NULL, "bcsr"); np = of_find_compatible_node(NULL, NULL, "fsl,mpc837xmds-bcsr");
if (np) { if (np) {
struct resource res; bcsr_regs = of_iomap(np, 0);
of_address_to_resource(np, 0, &res);
bcsr_regs = ioremap(res.start, res.end - res.start + 1);
of_node_put(np); of_node_put(np);
} }
if (!bcsr_regs) if (!bcsr_regs)
...@@ -96,6 +93,7 @@ static void __init mpc837x_mds_setup_arch(void) ...@@ -96,6 +93,7 @@ static void __init mpc837x_mds_setup_arch(void)
static struct of_device_id mpc837x_ids[] = { static struct of_device_id mpc837x_ids[] = {
{ .type = "soc", }, { .type = "soc", },
{ .compatible = "soc", }, { .compatible = "soc", },
{ .compatible = "simple-bus", },
{}, {},
}; };
......
...@@ -22,7 +22,6 @@ config PPC_83xx ...@@ -22,7 +22,6 @@ config PPC_83xx
select FSL_SOC select FSL_SOC
select MPC83xx select MPC83xx
select IPIC select IPIC
select FSL_EMB_PERFMON
config PPC_86xx config PPC_86xx
bool "Freescale 86xx" bool "Freescale 86xx"
......
...@@ -113,7 +113,12 @@ config FSL_BOOKE ...@@ -113,7 +113,12 @@ config FSL_BOOKE
default y default y
config FSL_EMB_PERFMON config FSL_EMB_PERFMON
bool bool "Freescale Embedded Perfmon"
depends on E500 || PPC_83xx
help
This is the Performance Monitor support found on the e500 core
and some e300 cores (c3 and c4). Select this only if your
core supports the Embedded Performance Monitor APU
config PTE_64BIT config PTE_64BIT
bool bool
......
...@@ -170,7 +170,8 @@ void spu_release_saved(struct spu_context *ctx) ...@@ -170,7 +170,8 @@ void spu_release_saved(struct spu_context *ctx)
{ {
BUG_ON(ctx->state != SPU_STATE_SAVED); BUG_ON(ctx->state != SPU_STATE_SAVED);
if (test_and_clear_bit(SPU_SCHED_WAS_ACTIVE, &ctx->sched_flags)) if (test_and_clear_bit(SPU_SCHED_WAS_ACTIVE, &ctx->sched_flags) &&
test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags))
spu_activate(ctx, 0); spu_activate(ctx, 0);
spu_release(ctx); spu_release(ctx);
......
...@@ -220,6 +220,7 @@ static int spu_run_init(struct spu_context *ctx, u32 *npc) ...@@ -220,6 +220,7 @@ static int spu_run_init(struct spu_context *ctx, u32 *npc)
} }
} }
set_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags);
return 0; return 0;
} }
...@@ -234,7 +235,7 @@ static int spu_run_fini(struct spu_context *ctx, u32 *npc, ...@@ -234,7 +235,7 @@ static int spu_run_fini(struct spu_context *ctx, u32 *npc,
*npc = ctx->ops->npc_read(ctx); *npc = ctx->ops->npc_read(ctx);
spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED); spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED);
ctx->policy = SCHED_IDLE; clear_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags);
spu_release(ctx); spu_release(ctx);
if (signal_pending(current)) if (signal_pending(current))
......
...@@ -867,7 +867,7 @@ static noinline void spusched_tick(struct spu_context *ctx) ...@@ -867,7 +867,7 @@ static noinline void spusched_tick(struct spu_context *ctx)
if (ctx->policy == SCHED_FIFO) if (ctx->policy == SCHED_FIFO)
goto out; goto out;
if (--ctx->time_slice && ctx->policy != SCHED_IDLE) if (--ctx->time_slice && test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags))
goto out; goto out;
spu = ctx->spu; spu = ctx->spu;
...@@ -877,7 +877,7 @@ static noinline void spusched_tick(struct spu_context *ctx) ...@@ -877,7 +877,7 @@ static noinline void spusched_tick(struct spu_context *ctx)
new = grab_runnable_context(ctx->prio + 1, spu->node); new = grab_runnable_context(ctx->prio + 1, spu->node);
if (new) { if (new) {
spu_unschedule(spu, ctx); spu_unschedule(spu, ctx);
if (ctx->policy != SCHED_IDLE) if (test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags))
spu_add_to_rq(ctx); spu_add_to_rq(ctx);
} else { } else {
spu_context_nospu_trace(spusched_tick__newslice, ctx); spu_context_nospu_trace(spusched_tick__newslice, ctx);
......
...@@ -44,6 +44,7 @@ struct spu_gang; ...@@ -44,6 +44,7 @@ struct spu_gang;
enum { enum {
SPU_SCHED_NOTIFY_ACTIVE, SPU_SCHED_NOTIFY_ACTIVE,
SPU_SCHED_WAS_ACTIVE, /* was active upon spu_acquire_saved() */ SPU_SCHED_WAS_ACTIVE, /* was active upon spu_acquire_saved() */
SPU_SCHED_SPU_RUN, /* context is within spu_run */
}; };
struct spu_context { struct spu_context {
......
...@@ -618,9 +618,9 @@ static int pmacpic_find_viaint(void) ...@@ -618,9 +618,9 @@ static int pmacpic_find_viaint(void)
if (np == NULL) if (np == NULL)
goto not_found; goto not_found;
viaint = irq_of_parse_and_map(np, 0);; viaint = irq_of_parse_and_map(np, 0);;
#endif /* CONFIG_ADB_PMU */
not_found: not_found:
#endif /* CONFIG_ADB_PMU */
return viaint; return viaint;
} }
......
...@@ -509,7 +509,7 @@ int qe_upload_firmware(const struct qe_firmware *firmware) ...@@ -509,7 +509,7 @@ int qe_upload_firmware(const struct qe_firmware *firmware)
} }
/* Validate some of the fields */ /* Validate some of the fields */
if ((firmware->count < 1) || (firmware->count >= MAX_QE_RISC)) { if ((firmware->count < 1) || (firmware->count > MAX_QE_RISC)) {
printk(KERN_ERR "qe-firmware: invalid data\n"); printk(KERN_ERR "qe-firmware: invalid data\n");
return -EINVAL; return -EINVAL;
} }
...@@ -609,7 +609,10 @@ struct qe_firmware_info *qe_get_firmware_info(void) ...@@ -609,7 +609,10 @@ struct qe_firmware_info *qe_get_firmware_info(void)
* If we haven't checked yet, and a driver hasn't uploaded a firmware * If we haven't checked yet, and a driver hasn't uploaded a firmware
* yet, then check the device tree for information. * yet, then check the device tree for information.
*/ */
if (initialized || qe_firmware_uploaded) if (qe_firmware_uploaded)
return &qe_firmware_info;
if (initialized)
return NULL; return NULL;
initialized = 1; initialized = 1;
......
...@@ -329,8 +329,18 @@ InstructionTLBMiss: ...@@ -329,8 +329,18 @@ InstructionTLBMiss:
mfspr r11, SPRN_MD_TWC /* ....and get the pte address */ mfspr r11, SPRN_MD_TWC /* ....and get the pte address */
lwz r10, 0(r11) /* Get the pte */ lwz r10, 0(r11) /* Get the pte */
#ifdef CONFIG_SWAP
/* do not set the _PAGE_ACCESSED bit of a non-present page */
andi. r11, r10, _PAGE_PRESENT
beq 4f
ori r10, r10, _PAGE_ACCESSED
mfspr r11, SPRN_MD_TWC /* get the pte address again */
stw r10, 0(r11)
4:
#else
ori r10, r10, _PAGE_ACCESSED ori r10, r10, _PAGE_ACCESSED
stw r10, 0(r11) stw r10, 0(r11)
#endif
/* The Linux PTE won't go exactly into the MMU TLB. /* The Linux PTE won't go exactly into the MMU TLB.
* Software indicator bits 21, 22 and 28 must be clear. * Software indicator bits 21, 22 and 28 must be clear.
...@@ -395,8 +405,17 @@ DataStoreTLBMiss: ...@@ -395,8 +405,17 @@ DataStoreTLBMiss:
DO_8xx_CPU6(0x3b80, r3) DO_8xx_CPU6(0x3b80, r3)
mtspr SPRN_MD_TWC, r11 mtspr SPRN_MD_TWC, r11
mfspr r11, SPRN_MD_TWC /* get the pte address again */ #ifdef CONFIG_SWAP
/* do not set the _PAGE_ACCESSED bit of a non-present page */
andi. r11, r10, _PAGE_PRESENT
beq 4f
ori r10, r10, _PAGE_ACCESSED
4:
/* and update pte in table */
#else
ori r10, r10, _PAGE_ACCESSED ori r10, r10, _PAGE_ACCESSED
#endif
mfspr r11, SPRN_MD_TWC /* get the pte address again */
stw r10, 0(r11) stw r10, 0(r11)
/* The Linux PTE won't go exactly into the MMU TLB. /* The Linux PTE won't go exactly into the MMU TLB.
...@@ -575,7 +594,16 @@ DataTLBError: ...@@ -575,7 +594,16 @@ DataTLBError:
/* Update 'changed', among others. /* Update 'changed', among others.
*/ */
#ifdef CONFIG_SWAP
ori r10, r10, _PAGE_DIRTY|_PAGE_HWWRITE
/* do not set the _PAGE_ACCESSED bit of a non-present page */
andi. r11, r10, _PAGE_PRESENT
beq 4f
ori r10, r10, _PAGE_ACCESSED
4:
#else
ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE
#endif
mfspr r11, SPRN_MD_TWC /* Get pte address again */ mfspr r11, SPRN_MD_TWC /* Get pte address again */
stw r10, 0(r11) /* and update pte in table */ stw r10, 0(r11) /* and update pte in table */
......
...@@ -528,8 +528,7 @@ static int block_event_to_scatterlist(const struct vioblocklpevent *bevent, ...@@ -528,8 +528,7 @@ static int block_event_to_scatterlist(const struct vioblocklpevent *bevent,
numsg = VIOMAXBLOCKDMA; numsg = VIOMAXBLOCKDMA;
*total_len = 0; *total_len = 0;
memset(sg, 0, sizeof(sg[0]) * VIOMAXBLOCKDMA); sg_init_table(sg, VIOMAXBLOCKDMA);
for (i = 0; (i < numsg) && (rw_data->dma_info[i].len > 0); ++i) { for (i = 0; (i < numsg) && (rw_data->dma_info[i].len > 0); ++i) {
sg_dma_address(&sg[i]) = rw_data->dma_info[i].token; sg_dma_address(&sg[i]) = rw_data->dma_info[i].token;
sg_dma_len(&sg[i]) = rw_data->dma_info[i].len; sg_dma_len(&sg[i]) = rw_data->dma_info[i].len;
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
static struct backlight_ops pmu_backlight_data; static struct backlight_ops pmu_backlight_data;
static DEFINE_SPINLOCK(pmu_backlight_lock); static DEFINE_SPINLOCK(pmu_backlight_lock);
static int sleeping; static int sleeping, uses_pmu_bl;
static u8 bl_curve[FB_BACKLIGHT_LEVELS]; static u8 bl_curve[FB_BACKLIGHT_LEVELS];
static void pmu_backlight_init_curve(u8 off, u8 min, u8 max) static void pmu_backlight_init_curve(u8 off, u8 min, u8 max)
...@@ -128,7 +128,7 @@ void pmu_backlight_set_sleep(int sleep) ...@@ -128,7 +128,7 @@ void pmu_backlight_set_sleep(int sleep)
spin_lock_irqsave(&pmu_backlight_lock, flags); spin_lock_irqsave(&pmu_backlight_lock, flags);
sleeping = sleep; sleeping = sleep;
if (pmac_backlight) { if (pmac_backlight && uses_pmu_bl) {
if (sleep) { if (sleep) {
struct adb_request req; struct adb_request req;
...@@ -166,6 +166,7 @@ void __init pmu_backlight_init() ...@@ -166,6 +166,7 @@ void __init pmu_backlight_init()
printk(KERN_ERR "PMU Backlight registration failed\n"); printk(KERN_ERR "PMU Backlight registration failed\n");
return; return;
} }
uses_pmu_bl = 1;
bd->props.max_brightness = FB_BACKLIGHT_LEVELS - 1; bd->props.max_brightness = FB_BACKLIGHT_LEVELS - 1;
pmu_backlight_init_curve(0x7F, 0x46, 0x0E); pmu_backlight_init_curve(0x7F, 0x46, 0x0E);
......
...@@ -2528,7 +2528,7 @@ EXPORT_SYMBOL(pmu_wait_complete); ...@@ -2528,7 +2528,7 @@ EXPORT_SYMBOL(pmu_wait_complete);
EXPORT_SYMBOL(pmu_suspend); EXPORT_SYMBOL(pmu_suspend);
EXPORT_SYMBOL(pmu_resume); EXPORT_SYMBOL(pmu_resume);
EXPORT_SYMBOL(pmu_unlock); EXPORT_SYMBOL(pmu_unlock);
#if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32) #if defined(CONFIG_PPC32)
EXPORT_SYMBOL(pmu_enable_irled); EXPORT_SYMBOL(pmu_enable_irled);
EXPORT_SYMBOL(pmu_battery_count); EXPORT_SYMBOL(pmu_battery_count);
EXPORT_SYMBOL(pmu_batteries); EXPORT_SYMBOL(pmu_batteries);
......
...@@ -339,14 +339,6 @@ extern int icache_44x_need_flush; ...@@ -339,14 +339,6 @@ extern int icache_44x_need_flush;
#define _PMD_PAGE_MASK 0x000c #define _PMD_PAGE_MASK 0x000c
#define _PMD_PAGE_8M 0x000c #define _PMD_PAGE_8M 0x000c
/*
* The 8xx TLB miss handler allegedly sets _PAGE_ACCESSED in the PTE
* for an address even if _PAGE_PRESENT is not set, as a performance
* optimization. This is a bug if you ever want to use swap unless
* _PAGE_ACCESSED is 2, which it isn't, or unless you have 8xx-specific
* definitions for __swp_entry etc. below, which would be gross.
* -- paulus
*/
#define _PTE_NONE_MASK _PAGE_ACCESSED #define _PTE_NONE_MASK _PAGE_ACCESSED
#else /* CONFIG_6xx */ #else /* CONFIG_6xx */
......
...@@ -299,14 +299,6 @@ extern unsigned long ioremap_bot, ioremap_base; ...@@ -299,14 +299,6 @@ extern unsigned long ioremap_bot, ioremap_base;
#define _PMD_PAGE_MASK 0x000c #define _PMD_PAGE_MASK 0x000c
#define _PMD_PAGE_8M 0x000c #define _PMD_PAGE_8M 0x000c
/*
* The 8xx TLB miss handler allegedly sets _PAGE_ACCESSED in the PTE
* for an address even if _PAGE_PRESENT is not set, as a performance
* optimization. This is a bug if you ever want to use swap unless
* _PAGE_ACCESSED is 2, which it isn't, or unless you have 8xx-specific
* definitions for __swp_entry etc. below, which would be gross.
* -- paulus
*/
#define _PTE_NONE_MASK _PAGE_ACCESSED #define _PTE_NONE_MASK _PAGE_ACCESSED
#else /* CONFIG_6xx */ #else /* CONFIG_6xx */
......
...@@ -147,8 +147,15 @@ extern void pmu_wait_complete(struct adb_request *req); ...@@ -147,8 +147,15 @@ extern void pmu_wait_complete(struct adb_request *req);
/* For use before switching interrupts off for a long time; /* For use before switching interrupts off for a long time;
* warning: not stackable * warning: not stackable
*/ */
#if defined(CONFIG_ADB_PMU)
extern void pmu_suspend(void); extern void pmu_suspend(void);
extern void pmu_resume(void); extern void pmu_resume(void);
#else
static inline void pmu_suspend(void)
{}
static inline void pmu_resume(void)
{}
#endif
extern void pmu_enable_irled(int on); extern void pmu_enable_irled(int on);
...@@ -192,7 +199,7 @@ extern unsigned int pmu_power_flags; ...@@ -192,7 +199,7 @@ extern unsigned int pmu_power_flags;
extern void pmu_backlight_init(void); extern void pmu_backlight_init(void);
/* some code needs to know if the PMU was suspended for hibernation */ /* some code needs to know if the PMU was suspended for hibernation */
#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32) #if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32)
extern int pmu_sys_suspended; extern int pmu_sys_suspended;
#else #else
/* if power management is not configured it can't be suspended */ /* if power management is not configured it can't be suspended */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment