mirror of
https://github.com/armbian/linux.git
synced 2026-01-06 10:13:00 -08:00
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (24 commits) [POWERPC] Fix compile error with kexec and CONFIG_SMP=n [POWERPC] Split initrd logic out of early_init_dt_scan_chosen() to fix warning [POWERPC] Fix warning in hpte_decode(), and generalize it [POWERPC] Minor pSeries IOMMU debug cleanup [POWERPC] PS3: Fix sys manager build error [POWERPC] Assorted janitorial EEH cleanups [POWERPC] We don't define CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID [POWERPC] pmu_sys_suspended is only defined for PPC32 [POWERPC] Fix incorrect calculation of I/O window addresses [POWERPC] celleb: Update celleb_defconfig [POWERPC] celleb: Fix parsing of machine type hack command line option [POWERPC] celleb: Fix PCI config space accesses to subordinate buses [POWERPC] celleb: Fix support for multiple PCI domains [POWERPC] Wire up sys_utimensat [POWERPC] CPM_UART: Removed __init from cpm_uart_init_portdesc to fix warning [POWERPC] User rheap from arch/powerpc/lib [POWERPC] 83xx: Fix the PCI ranges in the MPC834x_MDS device tree. [POWERPC] 83xx: Fix the PCI ranges in the MPC832x_MDS device tree. [POWERPC] CPM_UART: cpm_uart_set_termios should take ktermios, not termios [POWERPC] Change rheap functions to use ulongs instead of pointers ...
This commit is contained in:
@@ -146,7 +146,7 @@
|
||||
interrupt-parent = < &ipic >;
|
||||
interrupts = <42 8>;
|
||||
bus-range = <0 0>;
|
||||
ranges = <02000000 0 a0000000 90000000 0 10000000
|
||||
ranges = <02000000 0 90000000 90000000 0 10000000
|
||||
42000000 0 80000000 80000000 0 10000000
|
||||
01000000 0 00000000 d0000000 0 00100000>;
|
||||
clock-frequency = <0>;
|
||||
|
||||
@@ -223,7 +223,7 @@
|
||||
interrupt-parent = < &ipic >;
|
||||
interrupts = <42 8>;
|
||||
bus-range = <0 0>;
|
||||
ranges = <02000000 0 a0000000 a0000000 0 10000000
|
||||
ranges = <02000000 0 90000000 90000000 0 10000000
|
||||
42000000 0 80000000 80000000 0 10000000
|
||||
01000000 0 00000000 e2000000 0 00100000>;
|
||||
clock-frequency = <3f940aa>;
|
||||
@@ -284,7 +284,7 @@
|
||||
interrupts = <42 8>;
|
||||
bus-range = <0 0>;
|
||||
ranges = <02000000 0 b0000000 b0000000 0 10000000
|
||||
42000000 0 90000000 90000000 0 10000000
|
||||
42000000 0 a0000000 a0000000 0 10000000
|
||||
01000000 0 00000000 e2100000 0 00100000>;
|
||||
clock-frequency = <3f940aa>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.20-rc4
|
||||
# Thu Jan 11 20:55:33 2007
|
||||
# Linux kernel version: 2.6.21
|
||||
# Tue May 8 12:32:16 2007
|
||||
#
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_64BIT=y
|
||||
@@ -60,6 +60,7 @@ CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_IPC_NS is not set
|
||||
CONFIG_SYSVIPC_SYSCTL=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
@@ -70,6 +71,7 @@ CONFIG_IKCONFIG_PROC=y
|
||||
# CONFIG_CPUSETS is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
@@ -132,15 +134,26 @@ CONFIG_PPC_MULTIPLATFORM=y
|
||||
# CONFIG_PPC_PSERIES is not set
|
||||
# CONFIG_PPC_ISERIES is not set
|
||||
# CONFIG_PPC_MPC52xx is not set
|
||||
# CONFIG_PPC_MPC5200 is not set
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
# CONFIG_PPC_MAPLE is not set
|
||||
# CONFIG_PPC_PASEMI is not set
|
||||
CONFIG_PPC_CELLEB=y
|
||||
# CONFIG_PPC_PS3 is not set
|
||||
CONFIG_PPC_CELL=y
|
||||
# CONFIG_PPC_CELL_NATIVE is not set
|
||||
# CONFIG_PPC_IBM_CELL_BLADE is not set
|
||||
# CONFIG_PPC_PS3 is not set
|
||||
CONFIG_PPC_CELLEB=y
|
||||
|
||||
#
|
||||
# Cell Broadband Engine options
|
||||
#
|
||||
CONFIG_SPU_FS=y
|
||||
CONFIG_SPU_BASE=y
|
||||
# CONFIG_PQ2ADS is not set
|
||||
CONFIG_PPC_UDBG_BEAT=y
|
||||
# CONFIG_MPIC is not set
|
||||
# CONFIG_MPIC_WEIRD is not set
|
||||
# CONFIG_PPC_I8259 is not set
|
||||
# CONFIG_U3_DART is not set
|
||||
# CONFIG_PPC_RTAS is not set
|
||||
# CONFIG_MMIO_NVRAM is not set
|
||||
@@ -149,15 +162,7 @@ CONFIG_PPC_UDBG_BEAT=y
|
||||
# CONFIG_PPC_INDIRECT_IO is not set
|
||||
# CONFIG_GENERIC_IOMAP is not set
|
||||
# CONFIG_CPU_FREQ is not set
|
||||
# CONFIG_WANT_EARLY_SERIAL is not set
|
||||
# CONFIG_MPIC is not set
|
||||
|
||||
#
|
||||
# Cell Broadband Engine options
|
||||
#
|
||||
CONFIG_SPU_FS=y
|
||||
CONFIG_SPU_BASE=y
|
||||
# CONFIG_CBE_RAS is not set
|
||||
# CONFIG_CPM2 is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
@@ -183,7 +188,6 @@ CONFIG_NUMA=y
|
||||
CONFIG_NODES_SHIFT=4
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
|
||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
# CONFIG_FLATMEM_MANUAL is not set
|
||||
@@ -199,6 +203,7 @@ CONFIG_MEMORY_HOTPLUG_SPARSE=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_RESOURCES_64BIT=y
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_ARCH_MEMORY_PROBE=y
|
||||
CONFIG_NODES_SPAN_OTHER_NODES=y
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
@@ -207,14 +212,14 @@ CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
# CONFIG_PM is not set
|
||||
CONFIG_SECCOMP=y
|
||||
# CONFIG_WANT_DEVICE_TREE is not set
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# Bus options
|
||||
#
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
# CONFIG_MPIC_WEIRD is not set
|
||||
# CONFIG_PPC_I8259 is not set
|
||||
# CONFIG_PPC_INDIRECT_PCI is not set
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
@@ -240,13 +245,13 @@ CONFIG_NET=y
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
# CONFIG_NETDEBUG is not set
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_XFRM=y
|
||||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
# CONFIG_XFRM_MIGRATE is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
@@ -262,7 +267,7 @@ CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_INET_TUNNEL=y
|
||||
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_INET_XFRM_MODE_BEET=y
|
||||
@@ -280,6 +285,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
CONFIG_IPV6=y
|
||||
# CONFIG_IPV6_PRIVACY is not set
|
||||
# CONFIG_IPV6_ROUTER_PREF is not set
|
||||
# CONFIG_IPV6_OPTIMISTIC_DAD is not set
|
||||
CONFIG_INET6_AH=m
|
||||
CONFIG_INET6_ESP=m
|
||||
CONFIG_INET6_IPCOMP=m
|
||||
@@ -302,17 +308,21 @@ CONFIG_NETFILTER=y
|
||||
#
|
||||
# CONFIG_NETFILTER_NETLINK is not set
|
||||
# CONFIG_NF_CONNTRACK_ENABLED is not set
|
||||
# CONFIG_NF_CONNTRACK is not set
|
||||
# CONFIG_NETFILTER_XTABLES is not set
|
||||
|
||||
#
|
||||
# IP: Netfilter Configuration
|
||||
#
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
# CONFIG_IP_NF_IPTABLES is not set
|
||||
# CONFIG_IP_NF_ARPTABLES is not set
|
||||
|
||||
#
|
||||
# IPv6: Netfilter Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP6_NF_QUEUE is not set
|
||||
# CONFIG_IP6_NF_IPTABLES is not set
|
||||
|
||||
#
|
||||
# DCCP Configuration (EXPERIMENTAL)
|
||||
@@ -352,6 +362,13 @@ CONFIG_IP_NF_QUEUE=m
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
|
||||
#
|
||||
# Wireless
|
||||
#
|
||||
# CONFIG_CFG80211 is not set
|
||||
# CONFIG_WIRELESS_EXT is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
|
||||
#
|
||||
@@ -365,16 +382,13 @@ CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=y
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
# CONFIG_DEBUG_DEVRES is not set
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
# CONFIG_CONNECTOR is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
# CONFIG_MTD is not set
|
||||
|
||||
#
|
||||
@@ -385,6 +399,7 @@ CONFIG_FW_LOADER=y
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
# CONFIG_PNPACPI is not set
|
||||
|
||||
#
|
||||
# Block devices
|
||||
@@ -404,7 +419,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
@@ -443,7 +457,6 @@ CONFIG_BLK_DEV_GENERIC=y
|
||||
# CONFIG_BLK_DEV_OPTI621 is not set
|
||||
CONFIG_BLK_DEV_IDEDMA_PCI=y
|
||||
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
|
||||
CONFIG_IDEDMA_PCI_AUTO=y
|
||||
# CONFIG_IDEDMA_ONLYDISK is not set
|
||||
# CONFIG_BLK_DEV_AEC62XX is not set
|
||||
# CONFIG_BLK_DEV_ALI15X3 is not set
|
||||
@@ -458,6 +471,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
|
||||
# CONFIG_BLK_DEV_JMICRON is not set
|
||||
# CONFIG_BLK_DEV_SC1200 is not set
|
||||
# CONFIG_BLK_DEV_PIIX is not set
|
||||
# CONFIG_BLK_DEV_IT8213 is not set
|
||||
# CONFIG_BLK_DEV_IT821X is not set
|
||||
# CONFIG_BLK_DEV_NS87415 is not set
|
||||
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
|
||||
@@ -468,11 +482,11 @@ CONFIG_IDEDMA_PCI_AUTO=y
|
||||
# CONFIG_BLK_DEV_SLC90E66 is not set
|
||||
# CONFIG_BLK_DEV_TRM290 is not set
|
||||
# CONFIG_BLK_DEV_VIA82CXXX is not set
|
||||
CONFIG_BLK_DEV_IDE_CELLEB=y
|
||||
# CONFIG_BLK_DEV_TC86C001 is not set
|
||||
CONFIG_BLK_DEV_CELLEB=y
|
||||
# CONFIG_IDE_ARM is not set
|
||||
CONFIG_BLK_DEV_IDEDMA=y
|
||||
# CONFIG_IDEDMA_IVB is not set
|
||||
CONFIG_IDEDMA_AUTO=y
|
||||
# CONFIG_BLK_DEV_HD is not set
|
||||
|
||||
#
|
||||
@@ -546,6 +560,7 @@ CONFIG_SCSI_MULTI_LUN=y
|
||||
# CONFIG_SCSI_DC395x is not set
|
||||
# CONFIG_SCSI_DC390T is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_ESP_CORE is not set
|
||||
# CONFIG_SCSI_SRP is not set
|
||||
|
||||
#
|
||||
@@ -591,12 +606,7 @@ CONFIG_DM_MULTIPATH=m
|
||||
# I2O device support
|
||||
#
|
||||
# CONFIG_I2O is not set
|
||||
|
||||
#
|
||||
# Macintosh device drivers
|
||||
#
|
||||
# CONFIG_MAC_EMUMOUSEBTN is not set
|
||||
# CONFIG_WINDFARM is not set
|
||||
# CONFIG_MACINTOSH_DRIVERS is not set
|
||||
|
||||
#
|
||||
# Network device support
|
||||
@@ -652,15 +662,18 @@ CONFIG_MII=y
|
||||
# CONFIG_BNX2 is not set
|
||||
CONFIG_SPIDER_NET=y
|
||||
# CONFIG_QLA3XXX is not set
|
||||
# CONFIG_ATL1 is not set
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
# CONFIG_CHELSIO_T3 is not set
|
||||
# CONFIG_IXGB is not set
|
||||
# CONFIG_S2IO is not set
|
||||
# CONFIG_MYRI10GE is not set
|
||||
# CONFIG_NETXEN_NIC is not set
|
||||
# CONFIG_PASEMI_MAC is not set
|
||||
|
||||
#
|
||||
# Token Ring devices
|
||||
@@ -668,9 +681,10 @@ CONFIG_SPIDER_NET=y
|
||||
# CONFIG_TR is not set
|
||||
|
||||
#
|
||||
# Wireless LAN (non-hamradio)
|
||||
# Wireless LAN
|
||||
#
|
||||
# CONFIG_NET_RADIO is not set
|
||||
# CONFIG_WLAN_PRE80211 is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
|
||||
#
|
||||
# Wan interfaces
|
||||
@@ -770,6 +784,7 @@ CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_SERIAL_TXX9=y
|
||||
CONFIG_HAS_TXX9_SERIAL=y
|
||||
CONFIG_SERIAL_TXX9_NR_UARTS=3
|
||||
CONFIG_SERIAL_TXX9_CONSOLE=y
|
||||
# CONFIG_SERIAL_TXX9_STDSERIAL is not set
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
@@ -890,6 +905,11 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
@@ -904,7 +924,7 @@ CONFIG_I2C_ALGOBIT=y
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_FIRMWARE_EDID is not set
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
# CONFIG_FB is not set
|
||||
# CONFIG_FB_IBM_GXT4500 is not set
|
||||
|
||||
@@ -913,7 +933,6 @@ CONFIG_I2C_ALGOBIT=y
|
||||
#
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
@@ -924,6 +943,15 @@ CONFIG_DUMMY_CONSOLE=y
|
||||
# HID Devices
|
||||
#
|
||||
CONFIG_HID=y
|
||||
# CONFIG_HID_DEBUG is not set
|
||||
|
||||
#
|
||||
# USB Input Devices
|
||||
#
|
||||
CONFIG_USB_HID=y
|
||||
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
|
||||
# CONFIG_HID_FF is not set
|
||||
CONFIG_USB_HIDDEV=y
|
||||
|
||||
#
|
||||
# USB support
|
||||
@@ -938,9 +966,8 @@ CONFIG_USB=y
|
||||
# Miscellaneous USB options
|
||||
#
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
# CONFIG_USB_BANDWIDTH is not set
|
||||
# CONFIG_USB_DEVICE_CLASS is not set
|
||||
# CONFIG_USB_DYNAMIC_MINORS is not set
|
||||
# CONFIG_USB_MULTITHREAD_PROBE is not set
|
||||
# CONFIG_USB_OTG is not set
|
||||
|
||||
#
|
||||
@@ -953,6 +980,7 @@ CONFIG_USB_EHCI_HCD=m
|
||||
CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
CONFIG_USB_OHCI_HCD=m
|
||||
# CONFIG_USB_OHCI_HCD_PPC_OF is not set
|
||||
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
|
||||
CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
|
||||
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||
@@ -989,10 +1017,6 @@ CONFIG_USB_STORAGE=m
|
||||
#
|
||||
# USB Input Devices
|
||||
#
|
||||
CONFIG_USB_HID=y
|
||||
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
|
||||
# CONFIG_HID_FF is not set
|
||||
CONFIG_USB_HIDDEV=y
|
||||
# CONFIG_USB_AIPTEK is not set
|
||||
# CONFIG_USB_WACOM is not set
|
||||
# CONFIG_USB_ACECAD is not set
|
||||
@@ -1005,6 +1029,7 @@ CONFIG_USB_HIDDEV=y
|
||||
# CONFIG_USB_ATI_REMOTE2 is not set
|
||||
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||
# CONFIG_USB_APPLETOUCH is not set
|
||||
# CONFIG_USB_GTCO is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
@@ -1042,6 +1067,7 @@ CONFIG_USB_MON=y
|
||||
# CONFIG_USB_RIO500 is not set
|
||||
# CONFIG_USB_LEGOTOWER is not set
|
||||
# CONFIG_USB_LCD is not set
|
||||
# CONFIG_USB_BERRY_CHARGE is not set
|
||||
# CONFIG_USB_LED is not set
|
||||
# CONFIG_USB_CYPRESS_CY7C63 is not set
|
||||
# CONFIG_USB_CYTHERM is not set
|
||||
@@ -1052,6 +1078,7 @@ CONFIG_USB_MON=y
|
||||
# CONFIG_USB_SISUSBVGA is not set
|
||||
# CONFIG_USB_LD is not set
|
||||
# CONFIG_USB_TRANCEVIBRATOR is not set
|
||||
# CONFIG_USB_IOWARRIOR is not set
|
||||
# CONFIG_USB_TEST is not set
|
||||
|
||||
#
|
||||
@@ -1108,6 +1135,10 @@ CONFIG_USB_MON=y
|
||||
# DMA Devices
|
||||
#
|
||||
|
||||
#
|
||||
# Auxiliary Display support
|
||||
#
|
||||
|
||||
#
|
||||
# Virtualization
|
||||
#
|
||||
@@ -1293,6 +1324,8 @@ CONFIG_NLS_ISO8859_15=m
|
||||
# Distributed Lock Manager
|
||||
#
|
||||
# CONFIG_DLM is not set
|
||||
# CONFIG_UCC_SLOW is not set
|
||||
# CONFIG_UCC_FAST is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
@@ -1305,7 +1338,8 @@ CONFIG_LIBCRC32C=m
|
||||
CONFIG_ZLIB_INFLATE=m
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_PLIST=y
|
||||
CONFIG_IOMAP_COPY=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
|
||||
#
|
||||
# Instrumentation Support
|
||||
@@ -1323,15 +1357,16 @@ CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_DEBUG_SHIRQ is not set
|
||||
CONFIG_LOG_BUF_SHIFT=15
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_TIMER_STATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
# CONFIG_DEBUG_RWSEMS is not set
|
||||
CONFIG_DEBUG_SPINLOCK_SLEEP=y
|
||||
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
@@ -1341,8 +1376,10 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_FORCED_INLINING is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_DEBUG_STACKOVERFLOW is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
CONFIG_DEBUGGER=y
|
||||
CONFIG_XMON=y
|
||||
CONFIG_XMON_DEFAULT=y
|
||||
@@ -1356,6 +1393,7 @@ CONFIG_PPC_EARLY_DEBUG=y
|
||||
# CONFIG_PPC_EARLY_DEBUG_RTAS_CONSOLE is not set
|
||||
# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
|
||||
# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
|
||||
# CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set
|
||||
CONFIG_PPC_EARLY_DEBUG_BEAT=y
|
||||
|
||||
#
|
||||
@@ -1385,8 +1423,10 @@ CONFIG_CRYPTO_TGR192=m
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_CBC=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
CONFIG_CRYPTO_DES=m
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
CONFIG_CRYPTO_BLOWFISH=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
CONFIG_CRYPTO_TWOFISH_COMMON=m
|
||||
@@ -1401,6 +1441,7 @@ CONFIG_CRYPTO_ANUBIS=m
|
||||
CONFIG_CRYPTO_DEFLATE=m
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||
CONFIG_CRYPTO_CRC32C=m
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
CONFIG_CRYPTO_TEST=m
|
||||
|
||||
#
|
||||
|
||||
@@ -1098,35 +1098,24 @@ static int get_bus_io_range(struct pci_bus *bus, unsigned long *start_phys,
|
||||
unsigned long *start_virt, unsigned long *size)
|
||||
{
|
||||
struct pci_controller *hose = pci_bus_to_host(bus);
|
||||
struct pci_bus_region region;
|
||||
struct resource *res;
|
||||
|
||||
if (bus->self) {
|
||||
if (bus->self)
|
||||
res = bus->resource[0];
|
||||
pcibios_resource_to_bus(bus->self, ®ion, res);
|
||||
*start_phys = hose->io_base_phys + region.start;
|
||||
*start_virt = (unsigned long) hose->io_base_virt +
|
||||
region.start;
|
||||
if (region.end > region.start)
|
||||
*size = region.end - region.start + 1;
|
||||
else {
|
||||
printk("%s(): unexpected region 0x%lx->0x%lx\n",
|
||||
__FUNCTION__, region.start, region.end);
|
||||
return 1;
|
||||
}
|
||||
|
||||
} else {
|
||||
else
|
||||
/* Root Bus */
|
||||
res = &hose->io_resource;
|
||||
*start_phys = hose->io_base_phys + res->start;
|
||||
*start_virt = (unsigned long) hose->io_base_virt + res->start;
|
||||
if (res->end > res->start)
|
||||
*size = res->end - res->start + 1;
|
||||
else {
|
||||
printk("%s(): unexpected region 0x%lx->0x%lx\n",
|
||||
__FUNCTION__, res->start, res->end);
|
||||
return 1;
|
||||
}
|
||||
|
||||
*start_virt = pci_io_base + res->start;
|
||||
*start_phys = *start_virt + hose->io_base_phys
|
||||
- (unsigned long) hose->io_base_virt;
|
||||
|
||||
if (res->end > res->start)
|
||||
*size = res->end - res->start + 1;
|
||||
else {
|
||||
printk("%s(): unexpected region 0x%lx->0x%lx\n",
|
||||
__FUNCTION__, res->start, res->end);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -716,11 +716,40 @@ static int __init early_init_dt_scan_cpus(unsigned long node,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
static void __init early_init_dt_check_for_initrd(unsigned long node)
|
||||
{
|
||||
unsigned long l;
|
||||
u32 *prop;
|
||||
|
||||
DBG("Looking for initrd properties... ");
|
||||
|
||||
prop = of_get_flat_dt_prop(node, "linux,initrd-start", &l);
|
||||
if (prop) {
|
||||
initrd_start = (unsigned long)__va(of_read_ulong(prop, l/4));
|
||||
|
||||
prop = of_get_flat_dt_prop(node, "linux,initrd-end", &l);
|
||||
if (prop) {
|
||||
initrd_end = (unsigned long)
|
||||
__va(of_read_ulong(prop, l/4));
|
||||
initrd_below_start_ok = 1;
|
||||
} else {
|
||||
initrd_start = 0;
|
||||
}
|
||||
}
|
||||
|
||||
DBG("initrd_start=0x%lx initrd_end=0x%lx\n", initrd_start, initrd_end);
|
||||
}
|
||||
#else
|
||||
static inline void early_init_dt_check_for_initrd(unsigned long node)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_BLK_DEV_INITRD */
|
||||
|
||||
static int __init early_init_dt_scan_chosen(unsigned long node,
|
||||
const char *uname, int depth, void *data)
|
||||
{
|
||||
unsigned long *lprop;
|
||||
u32 *prop;
|
||||
unsigned long l;
|
||||
char *p;
|
||||
|
||||
@@ -762,21 +791,7 @@ static int __init early_init_dt_scan_chosen(unsigned long node,
|
||||
crashk_res.end = crashk_res.start + *lprop - 1;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
DBG("Looking for initrd properties... ");
|
||||
prop = of_get_flat_dt_prop(node, "linux,initrd-start", &l);
|
||||
if (prop) {
|
||||
initrd_start = (unsigned long)__va(of_read_ulong(prop, l/4));
|
||||
prop = of_get_flat_dt_prop(node, "linux,initrd-end", &l);
|
||||
if (prop) {
|
||||
initrd_end = (unsigned long)__va(of_read_ulong(prop, l/4));
|
||||
initrd_below_start_ok = 1;
|
||||
} else {
|
||||
initrd_start = 0;
|
||||
}
|
||||
}
|
||||
DBG("initrd_start=0x%lx initrd_end=0x%lx\n", initrd_start, initrd_end);
|
||||
#endif /* CONFIG_BLK_DEV_INITRD */
|
||||
early_init_dt_check_for_initrd(node);
|
||||
|
||||
/* Retreive command line */
|
||||
p = of_get_flat_dt_prop(node, "bootargs", &l);
|
||||
|
||||
@@ -23,7 +23,5 @@ obj-$(CONFIG_SMP) += locks.o
|
||||
endif
|
||||
|
||||
# Temporary hack until we have migrated to asm-powerpc
|
||||
ifeq ($(CONFIG_PPC_MERGE),y)
|
||||
obj-$(CONFIG_8xx) += rheap.o
|
||||
obj-$(CONFIG_CPM2) += rheap.o
|
||||
endif
|
||||
|
||||
@@ -133,7 +133,7 @@ static rh_block_t *get_slot(rh_info_t * info)
|
||||
info->empty_slots--;
|
||||
|
||||
/* Initialize */
|
||||
blk->start = NULL;
|
||||
blk->start = 0;
|
||||
blk->size = 0;
|
||||
blk->owner = NULL;
|
||||
|
||||
@@ -158,7 +158,7 @@ static void attach_free_block(rh_info_t * info, rh_block_t * blkn)
|
||||
|
||||
/* We assume that they are aligned properly */
|
||||
size = blkn->size;
|
||||
s = (unsigned long)blkn->start;
|
||||
s = blkn->start;
|
||||
e = s + size;
|
||||
|
||||
/* Find the blocks immediately before and after the given one
|
||||
@@ -170,7 +170,7 @@ static void attach_free_block(rh_info_t * info, rh_block_t * blkn)
|
||||
list_for_each(l, &info->free_list) {
|
||||
blk = list_entry(l, rh_block_t, list);
|
||||
|
||||
bs = (unsigned long)blk->start;
|
||||
bs = blk->start;
|
||||
be = bs + blk->size;
|
||||
|
||||
if (next == NULL && s >= bs)
|
||||
@@ -188,10 +188,10 @@ static void attach_free_block(rh_info_t * info, rh_block_t * blkn)
|
||||
}
|
||||
|
||||
/* Now check if they are really adjacent */
|
||||
if (before != NULL && s != (unsigned long)before->start + before->size)
|
||||
if (before && s != (before->start + before->size))
|
||||
before = NULL;
|
||||
|
||||
if (after != NULL && e != (unsigned long)after->start)
|
||||
if (after && e != after->start)
|
||||
after = NULL;
|
||||
|
||||
/* No coalescing; list insert and return */
|
||||
@@ -216,7 +216,7 @@ static void attach_free_block(rh_info_t * info, rh_block_t * blkn)
|
||||
|
||||
/* Grow the after block backwards */
|
||||
if (before == NULL && after != NULL) {
|
||||
after->start = (int8_t *)after->start - size;
|
||||
after->start -= size;
|
||||
after->size += size;
|
||||
return;
|
||||
}
|
||||
@@ -321,14 +321,14 @@ void rh_init(rh_info_t * info, unsigned int alignment, int max_blocks,
|
||||
}
|
||||
|
||||
/* Attach a free memory region, coalesces regions if adjuscent */
|
||||
int rh_attach_region(rh_info_t * info, void *start, int size)
|
||||
int rh_attach_region(rh_info_t * info, unsigned long start, int size)
|
||||
{
|
||||
rh_block_t *blk;
|
||||
unsigned long s, e, m;
|
||||
int r;
|
||||
|
||||
/* The region must be aligned */
|
||||
s = (unsigned long)start;
|
||||
s = start;
|
||||
e = s + size;
|
||||
m = info->alignment - 1;
|
||||
|
||||
@@ -338,9 +338,12 @@ int rh_attach_region(rh_info_t * info, void *start, int size)
|
||||
/* Round end down */
|
||||
e = e & ~m;
|
||||
|
||||
if (IS_ERR_VALUE(e) || (e < s))
|
||||
return -ERANGE;
|
||||
|
||||
/* Take final values */
|
||||
start = (void *)s;
|
||||
size = (int)(e - s);
|
||||
start = s;
|
||||
size = e - s;
|
||||
|
||||
/* Grow the blocks, if needed */
|
||||
r = assure_empty(info, 1);
|
||||
@@ -358,7 +361,7 @@ int rh_attach_region(rh_info_t * info, void *start, int size)
|
||||
}
|
||||
|
||||
/* Detatch given address range, splits free block if needed. */
|
||||
void *rh_detach_region(rh_info_t * info, void *start, int size)
|
||||
unsigned long rh_detach_region(rh_info_t * info, unsigned long start, int size)
|
||||
{
|
||||
struct list_head *l;
|
||||
rh_block_t *blk, *newblk;
|
||||
@@ -366,10 +369,10 @@ void *rh_detach_region(rh_info_t * info, void *start, int size)
|
||||
|
||||
/* Validate size */
|
||||
if (size <= 0)
|
||||
return ERR_PTR(-EINVAL);
|
||||
return (unsigned long) -EINVAL;
|
||||
|
||||
/* The region must be aligned */
|
||||
s = (unsigned long)start;
|
||||
s = start;
|
||||
e = s + size;
|
||||
m = info->alignment - 1;
|
||||
|
||||
@@ -380,34 +383,34 @@ void *rh_detach_region(rh_info_t * info, void *start, int size)
|
||||
e = e & ~m;
|
||||
|
||||
if (assure_empty(info, 1) < 0)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
return (unsigned long) -ENOMEM;
|
||||
|
||||
blk = NULL;
|
||||
list_for_each(l, &info->free_list) {
|
||||
blk = list_entry(l, rh_block_t, list);
|
||||
/* The range must lie entirely inside one free block */
|
||||
bs = (unsigned long)blk->start;
|
||||
be = (unsigned long)blk->start + blk->size;
|
||||
bs = blk->start;
|
||||
be = blk->start + blk->size;
|
||||
if (s >= bs && e <= be)
|
||||
break;
|
||||
blk = NULL;
|
||||
}
|
||||
|
||||
if (blk == NULL)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
return (unsigned long) -ENOMEM;
|
||||
|
||||
/* Perfect fit */
|
||||
if (bs == s && be == e) {
|
||||
/* Delete from free list, release slot */
|
||||
list_del(&blk->list);
|
||||
release_slot(info, blk);
|
||||
return (void *)s;
|
||||
return s;
|
||||
}
|
||||
|
||||
/* blk still in free list, with updated start and/or size */
|
||||
if (bs == s || be == e) {
|
||||
if (bs == s)
|
||||
blk->start = (int8_t *)blk->start + size;
|
||||
blk->start += size;
|
||||
blk->size -= size;
|
||||
|
||||
} else {
|
||||
@@ -416,25 +419,29 @@ void *rh_detach_region(rh_info_t * info, void *start, int size)
|
||||
|
||||
/* the back free fragment */
|
||||
newblk = get_slot(info);
|
||||
newblk->start = (void *)e;
|
||||
newblk->start = e;
|
||||
newblk->size = be - e;
|
||||
|
||||
list_add(&newblk->list, &blk->list);
|
||||
}
|
||||
|
||||
return (void *)s;
|
||||
return s;
|
||||
}
|
||||
|
||||
void *rh_alloc_align(rh_info_t * info, int size, int alignment, const char *owner)
|
||||
/* Allocate a block of memory at the specified alignment. The value returned
|
||||
* is an offset into the buffer initialized by rh_init(), or a negative number
|
||||
* if there is an error.
|
||||
*/
|
||||
unsigned long rh_alloc_align(rh_info_t * info, int size, int alignment, const char *owner)
|
||||
{
|
||||
struct list_head *l;
|
||||
rh_block_t *blk;
|
||||
rh_block_t *newblk;
|
||||
void *start;
|
||||
unsigned long start;
|
||||
|
||||
/* Validate size, (must be power of two) */
|
||||
/* Validate size, and alignment must be power of two */
|
||||
if (size <= 0 || (alignment & (alignment - 1)) != 0)
|
||||
return ERR_PTR(-EINVAL);
|
||||
return (unsigned long) -EINVAL;
|
||||
|
||||
/* given alignment larger that default rheap alignment */
|
||||
if (alignment > info->alignment)
|
||||
@@ -444,7 +451,7 @@ void *rh_alloc_align(rh_info_t * info, int size, int alignment, const char *owne
|
||||
size = (size + (info->alignment - 1)) & ~(info->alignment - 1);
|
||||
|
||||
if (assure_empty(info, 1) < 0)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
return (unsigned long) -ENOMEM;
|
||||
|
||||
blk = NULL;
|
||||
list_for_each(l, &info->free_list) {
|
||||
@@ -455,7 +462,7 @@ void *rh_alloc_align(rh_info_t * info, int size, int alignment, const char *owne
|
||||
}
|
||||
|
||||
if (blk == NULL)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
return (unsigned long) -ENOMEM;
|
||||
|
||||
/* Just fits */
|
||||
if (blk->size == size) {
|
||||
@@ -475,7 +482,7 @@ void *rh_alloc_align(rh_info_t * info, int size, int alignment, const char *owne
|
||||
newblk->owner = owner;
|
||||
|
||||
/* blk still in free list, with updated start, size */
|
||||
blk->start = (int8_t *)blk->start + size;
|
||||
blk->start += size;
|
||||
blk->size -= size;
|
||||
|
||||
start = newblk->start;
|
||||
@@ -486,19 +493,25 @@ void *rh_alloc_align(rh_info_t * info, int size, int alignment, const char *owne
|
||||
/* this is no problem with the deallocator since */
|
||||
/* we scan for pointers that lie in the blocks */
|
||||
if (alignment > info->alignment)
|
||||
start = (void *)(((unsigned long)start + alignment - 1) &
|
||||
~(alignment - 1));
|
||||
start = (start + alignment - 1) & ~(alignment - 1);
|
||||
|
||||
return start;
|
||||
}
|
||||
|
||||
void *rh_alloc(rh_info_t * info, int size, const char *owner)
|
||||
/* Allocate a block of memory at the default alignment. The value returned is
|
||||
* an offset into the buffer initialized by rh_init(), or a negative number if
|
||||
* there is an error.
|
||||
*/
|
||||
unsigned long rh_alloc(rh_info_t * info, int size, const char *owner)
|
||||
{
|
||||
return rh_alloc_align(info, size, info->alignment, owner);
|
||||
}
|
||||
|
||||
/* allocate at precisely the given address */
|
||||
void *rh_alloc_fixed(rh_info_t * info, void *start, int size, const char *owner)
|
||||
/* Allocate a block of memory at the given offset, rounded up to the default
|
||||
* alignment. The value returned is an offset into the buffer initialized by
|
||||
* rh_init(), or a negative number if there is an error.
|
||||
*/
|
||||
unsigned long rh_alloc_fixed(rh_info_t * info, unsigned long start, int size, const char *owner)
|
||||
{
|
||||
struct list_head *l;
|
||||
rh_block_t *blk, *newblk1, *newblk2;
|
||||
@@ -506,10 +519,10 @@ void *rh_alloc_fixed(rh_info_t * info, void *start, int size, const char *owner)
|
||||
|
||||
/* Validate size */
|
||||
if (size <= 0)
|
||||
return ERR_PTR(-EINVAL);
|
||||
return (unsigned long) -EINVAL;
|
||||
|
||||
/* The region must be aligned */
|
||||
s = (unsigned long)start;
|
||||
s = start;
|
||||
e = s + size;
|
||||
m = info->alignment - 1;
|
||||
|
||||
@@ -520,20 +533,20 @@ void *rh_alloc_fixed(rh_info_t * info, void *start, int size, const char *owner)
|
||||
e = e & ~m;
|
||||
|
||||
if (assure_empty(info, 2) < 0)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
return (unsigned long) -ENOMEM;
|
||||
|
||||
blk = NULL;
|
||||
list_for_each(l, &info->free_list) {
|
||||
blk = list_entry(l, rh_block_t, list);
|
||||
/* The range must lie entirely inside one free block */
|
||||
bs = (unsigned long)blk->start;
|
||||
be = (unsigned long)blk->start + blk->size;
|
||||
bs = blk->start;
|
||||
be = blk->start + blk->size;
|
||||
if (s >= bs && e <= be)
|
||||
break;
|
||||
}
|
||||
|
||||
if (blk == NULL)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
return (unsigned long) -ENOMEM;
|
||||
|
||||
/* Perfect fit */
|
||||
if (bs == s && be == e) {
|
||||
@@ -551,7 +564,7 @@ void *rh_alloc_fixed(rh_info_t * info, void *start, int size, const char *owner)
|
||||
/* blk still in free list, with updated start and/or size */
|
||||
if (bs == s || be == e) {
|
||||
if (bs == s)
|
||||
blk->start = (int8_t *)blk->start + size;
|
||||
blk->start += size;
|
||||
blk->size -= size;
|
||||
|
||||
} else {
|
||||
@@ -560,14 +573,14 @@ void *rh_alloc_fixed(rh_info_t * info, void *start, int size, const char *owner)
|
||||
|
||||
/* The back free fragment */
|
||||
newblk2 = get_slot(info);
|
||||
newblk2->start = (void *)e;
|
||||
newblk2->start = e;
|
||||
newblk2->size = be - e;
|
||||
|
||||
list_add(&newblk2->list, &blk->list);
|
||||
}
|
||||
|
||||
newblk1 = get_slot(info);
|
||||
newblk1->start = (void *)s;
|
||||
newblk1->start = s;
|
||||
newblk1->size = e - s;
|
||||
newblk1->owner = owner;
|
||||
|
||||
@@ -577,7 +590,11 @@ void *rh_alloc_fixed(rh_info_t * info, void *start, int size, const char *owner)
|
||||
return start;
|
||||
}
|
||||
|
||||
int rh_free(rh_info_t * info, void *start)
|
||||
/* Deallocate the memory previously allocated by one of the rh_alloc functions.
|
||||
* The return value is the size of the deallocated block, or a negative number
|
||||
* if there is an error.
|
||||
*/
|
||||
int rh_free(rh_info_t * info, unsigned long start)
|
||||
{
|
||||
rh_block_t *blk, *blk2;
|
||||
struct list_head *l;
|
||||
@@ -642,7 +659,7 @@ int rh_get_stats(rh_info_t * info, int what, int max_stats, rh_stats_t * stats)
|
||||
return nr;
|
||||
}
|
||||
|
||||
int rh_set_owner(rh_info_t * info, void *start, const char *owner)
|
||||
int rh_set_owner(rh_info_t * info, unsigned long start, const char *owner)
|
||||
{
|
||||
rh_block_t *blk, *blk2;
|
||||
struct list_head *l;
|
||||
@@ -684,8 +701,8 @@ void rh_dump(rh_info_t * info)
|
||||
nr = maxnr;
|
||||
for (i = 0; i < nr; i++)
|
||||
printk(KERN_INFO
|
||||
" 0x%p-0x%p (%u)\n",
|
||||
st[i].start, (int8_t *) st[i].start + st[i].size,
|
||||
" 0x%lx-0x%lx (%u)\n",
|
||||
st[i].start, st[i].start + st[i].size,
|
||||
st[i].size);
|
||||
printk(KERN_INFO "\n");
|
||||
|
||||
@@ -695,8 +712,8 @@ void rh_dump(rh_info_t * info)
|
||||
nr = maxnr;
|
||||
for (i = 0; i < nr; i++)
|
||||
printk(KERN_INFO
|
||||
" 0x%p-0x%p (%u) %s\n",
|
||||
st[i].start, (int8_t *) st[i].start + st[i].size,
|
||||
" 0x%lx-0x%lx (%u) %s\n",
|
||||
st[i].start, st[i].start + st[i].size,
|
||||
st[i].size, st[i].owner != NULL ? st[i].owner : "");
|
||||
printk(KERN_INFO "\n");
|
||||
}
|
||||
@@ -704,6 +721,6 @@ void rh_dump(rh_info_t * info)
|
||||
void rh_dump_blk(rh_info_t * info, rh_block_t * blk)
|
||||
{
|
||||
printk(KERN_INFO
|
||||
"blk @0x%p: 0x%p-0x%p (%u)\n",
|
||||
blk, blk->start, (int8_t *) blk->start + blk->size, blk->size);
|
||||
"blk @0x%p: 0x%lx-0x%lx (%u)\n",
|
||||
blk, blk->start, blk->start + blk->size, blk->size);
|
||||
}
|
||||
|
||||
@@ -376,31 +376,28 @@ static void hpte_decode(hpte_t *hpte, unsigned long slot,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* FIXME, the code below works for 16M, 64K, and 4K pages as these
|
||||
* fall under the p<=23 rules for calculating the virtual address.
|
||||
* In the case of 16M pages, an extra bit is stolen from the AVPN
|
||||
* field to achieve the requisite 24 bits.
|
||||
*
|
||||
* Does not work for 16G pages or 1 TB segments.
|
||||
*/
|
||||
/* This works for all page sizes, and for 256M and 1T segments */
|
||||
shift = mmu_psize_defs[size].shift;
|
||||
if (mmu_psize_defs[size].avpnm)
|
||||
avpnm_bits = __ilog2_u64(mmu_psize_defs[size].avpnm) + 1;
|
||||
else
|
||||
avpnm_bits = 0;
|
||||
if (shift - avpnm_bits <= 23) {
|
||||
avpn = HPTE_V_AVPN_VAL(hpte_v) << 23;
|
||||
avpn = (HPTE_V_AVPN_VAL(hpte_v) & ~mmu_psize_defs[size].avpnm) << 23;
|
||||
|
||||
if (shift < 23) {
|
||||
unsigned long vpi, pteg;
|
||||
if (shift < 23) {
|
||||
unsigned long vpi, vsid, pteg;
|
||||
|
||||
pteg = slot / HPTES_PER_GROUP;
|
||||
if (hpte_v & HPTE_V_SECONDARY)
|
||||
pteg = ~pteg;
|
||||
pteg = slot / HPTES_PER_GROUP;
|
||||
if (hpte_v & HPTE_V_SECONDARY)
|
||||
pteg = ~pteg;
|
||||
switch (hpte_v >> HPTE_V_SSIZE_SHIFT) {
|
||||
case MMU_SEGSIZE_256M:
|
||||
vpi = ((avpn >> 28) ^ pteg) & htab_hash_mask;
|
||||
avpn |= (vpi << mmu_psize_defs[size].shift);
|
||||
break;
|
||||
case MMU_SEGSIZE_1T:
|
||||
vsid = avpn >> 40;
|
||||
vpi = (vsid ^ (vsid << 25) ^ pteg) & htab_hash_mask;
|
||||
break;
|
||||
default:
|
||||
avpn = vpi = psize = 0;
|
||||
}
|
||||
avpn |= (vpi << mmu_psize_defs[size].shift);
|
||||
}
|
||||
|
||||
*va = avpn;
|
||||
|
||||
@@ -40,7 +40,9 @@ unsigned long isa_mem_base = 0;
|
||||
*/
|
||||
static void __init mpc8313_rdb_setup_arch(void)
|
||||
{
|
||||
#ifdef CONFIG_PCI
|
||||
struct device_node *np;
|
||||
#endif
|
||||
|
||||
if (ppc_md.progress)
|
||||
ppc_md.progress("mpc8313_rdb_setup_arch()", 0);
|
||||
|
||||
@@ -44,7 +44,9 @@ unsigned long isa_mem_base = 0;
|
||||
*/
|
||||
static void __init mpc832x_rdb_setup_arch(void)
|
||||
{
|
||||
#if defined(CONFIG_PCI) || defined(CONFIG_QUICC_ENGINE)
|
||||
struct device_node *np;
|
||||
#endif
|
||||
|
||||
if (ppc_md.progress)
|
||||
ppc_md.progress("mpc832x_rdb_setup_arch()", 0);
|
||||
|
||||
@@ -50,7 +50,9 @@ unsigned long isa_mem_base = 0;
|
||||
*/
|
||||
static void __init mpc834x_itx_setup_arch(void)
|
||||
{
|
||||
#ifdef CONFIG_PCI
|
||||
struct device_node *np;
|
||||
#endif
|
||||
|
||||
if (ppc_md.progress)
|
||||
ppc_md.progress("mpc834x_itx_setup_arch()", 0);
|
||||
|
||||
@@ -120,7 +120,9 @@ static int mpc834x_usb_cfg(void)
|
||||
*/
|
||||
static void __init mpc834x_mds_setup_arch(void)
|
||||
{
|
||||
#ifdef CONFIG_PCI
|
||||
struct device_node *np;
|
||||
#endif
|
||||
|
||||
if (ppc_md.progress)
|
||||
ppc_md.progress("mpc834x_mds_setup_arch()", 0);
|
||||
|
||||
@@ -168,7 +168,7 @@ static void __devinit quirk_uli1575(struct pci_dev *dev)
|
||||
{
|
||||
unsigned short temp;
|
||||
struct pci_controller *hose = pci_bus_to_host(dev->bus);
|
||||
unsigned char irq2pin[16];
|
||||
unsigned char irq2pin[16], c;
|
||||
unsigned long pirq_map_word = 0;
|
||||
u32 irq;
|
||||
int i;
|
||||
@@ -288,6 +288,11 @@ static void __devinit quirk_uli1575(struct pci_dev *dev)
|
||||
outb(0x1e, 0x4d1);
|
||||
|
||||
#undef ULI1575_SET_DEV_IRQ
|
||||
|
||||
/* Disable the HD interface and enable the AC97 interface. */
|
||||
pci_read_config_byte(dev, 0xb8, &c);
|
||||
c &= 0x7f;
|
||||
pci_write_config_byte(dev, 0xb8, c);
|
||||
}
|
||||
|
||||
static void __devinit quirk_uli5288(struct pci_dev *dev)
|
||||
|
||||
@@ -457,6 +457,7 @@ int __devinit celleb_setup_phb(struct pci_controller *phb)
|
||||
|
||||
pr_debug("PCI: celleb_setup_phb() %s\n", name);
|
||||
phb_set_bus_ranges(dev, phb);
|
||||
phb->buid = 1;
|
||||
|
||||
if (strcmp(name, "epci") == 0) {
|
||||
phb->ops = &celleb_epci_ops;
|
||||
|
||||
@@ -133,13 +133,13 @@ static int celleb_epci_check_abort(struct pci_controller *hose,
|
||||
}
|
||||
|
||||
static volatile void __iomem *celleb_epci_make_config_addr(
|
||||
struct pci_bus *bus,
|
||||
struct pci_controller *hose,
|
||||
unsigned int devfn, int where)
|
||||
{
|
||||
volatile void __iomem *addr;
|
||||
struct pci_bus *bus = hose->bus;
|
||||
|
||||
if (bus->self)
|
||||
if (bus != hose->bus)
|
||||
addr = celleb_epci_get_epci_cfg(hose) +
|
||||
(((bus->number & 0xff) << 16)
|
||||
| ((devfn & 0xff) << 8)
|
||||
@@ -193,7 +193,7 @@ static int celleb_epci_read_config(struct pci_bus *bus,
|
||||
} else {
|
||||
|
||||
clear_and_disable_master_abort_interrupt(hose);
|
||||
addr = celleb_epci_make_config_addr(hose, devfn, where);
|
||||
addr = celleb_epci_make_config_addr(bus, hose, devfn, where);
|
||||
|
||||
switch (size) {
|
||||
case 1:
|
||||
@@ -257,7 +257,7 @@ static int celleb_epci_write_config(struct pci_bus *bus,
|
||||
} else {
|
||||
|
||||
clear_and_disable_master_abort_interrupt(hose);
|
||||
addr = celleb_epci_make_config_addr(hose, devfn, where);
|
||||
addr = celleb_epci_make_config_addr(bus, hose, devfn, where);
|
||||
|
||||
switch (size) {
|
||||
case 1:
|
||||
|
||||
@@ -80,7 +80,7 @@ static int celleb_machine_type_hack(char *ptr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
__setup("celleb_machine_type_hack", celleb_machine_type_hack);
|
||||
__setup("celleb_machine_type_hack=", celleb_machine_type_hack);
|
||||
|
||||
static void celleb_progress(char *s, unsigned short hex)
|
||||
{
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
*/
|
||||
#define EEH_MAX_FAILS 2100000
|
||||
|
||||
/* Time to wait for a PCI slot to retport status, in milliseconds */
|
||||
/* Time to wait for a PCI slot to report status, in milliseconds */
|
||||
#define PCI_BUS_RESET_WAIT_MSEC (60*1000)
|
||||
|
||||
/* RTAS tokens */
|
||||
@@ -95,11 +95,18 @@ EXPORT_SYMBOL(eeh_subsystem_enabled);
|
||||
/* Lock to avoid races due to multiple reports of an error */
|
||||
static DEFINE_SPINLOCK(confirm_error_lock);
|
||||
|
||||
/* Buffer for reporting slot-error-detail rtas calls */
|
||||
/* Buffer for reporting slot-error-detail rtas calls. Its here
|
||||
* in BSS, and not dynamically alloced, so that it ends up in
|
||||
* RMO where RTAS can access it.
|
||||
*/
|
||||
static unsigned char slot_errbuf[RTAS_ERROR_LOG_MAX];
|
||||
static DEFINE_SPINLOCK(slot_errbuf_lock);
|
||||
static int eeh_error_buf_size;
|
||||
|
||||
/* Buffer for reporting pci register dumps. Its here in BSS, and
|
||||
* not dynamically alloced, so that it ends up in RMO where RTAS
|
||||
* can access it.
|
||||
*/
|
||||
#define EEH_PCI_REGS_LOG_LEN 4096
|
||||
static unsigned char pci_regs_buf[EEH_PCI_REGS_LOG_LEN];
|
||||
|
||||
@@ -218,7 +225,7 @@ static size_t gather_pci_data(struct pci_dn *pdn, char * buf, size_t len)
|
||||
void eeh_slot_error_detail(struct pci_dn *pdn, int severity)
|
||||
{
|
||||
size_t loglen = 0;
|
||||
memset(pci_regs_buf, 0, EEH_PCI_REGS_LOG_LEN);
|
||||
pci_regs_buf[0] = 0;
|
||||
|
||||
rtas_pci_enable(pdn, EEH_THAW_MMIO);
|
||||
loglen = gather_pci_data(pdn, pci_regs_buf, EEH_PCI_REGS_LOG_LEN);
|
||||
|
||||
@@ -378,8 +378,9 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
|
||||
|
||||
/* Since rtas may enable MMIO when posting the error log,
|
||||
* don't post the error log until after all dev drivers
|
||||
* have been informed. */
|
||||
eeh_slot_error_detail(frozen_pdn, 1 /* Temporary Error */);
|
||||
* have been informed.
|
||||
*/
|
||||
eeh_slot_error_detail(frozen_pdn, EEH_LOG_TEMP_FAILURE);
|
||||
|
||||
/* If all device drivers were EEH-unaware, then shut
|
||||
* down all of the device drivers, and hope they
|
||||
@@ -470,7 +471,7 @@ hard_fail:
|
||||
location, drv_str, pci_str);
|
||||
|
||||
perm_error:
|
||||
eeh_slot_error_detail(frozen_pdn, 2 /* Permanent Error */);
|
||||
eeh_slot_error_detail(frozen_pdn, EEH_LOG_PERM_FAILURE);
|
||||
|
||||
/* Notify all devices that they're about to go down. */
|
||||
pci_walk_bus(frozen_bus, eeh_report_failure, NULL);
|
||||
|
||||
@@ -520,7 +520,6 @@ static void pci_dma_dev_setup_pSeriesLP(struct pci_dev *dev)
|
||||
dev->dev.archdata.dma_data = PCI_DN(pdn)->iommu_table;
|
||||
return;
|
||||
}
|
||||
DBG(" found DMA window, table: %p\n", pci->iommu_table);
|
||||
|
||||
pci = PCI_DN(pdn);
|
||||
if (!pci->iommu_table) {
|
||||
@@ -534,6 +533,8 @@ static void pci_dma_dev_setup_pSeriesLP(struct pci_dev *dev)
|
||||
|
||||
pci->iommu_table = iommu_init_table(tbl, pci->phb->node);
|
||||
DBG(" created table: %p\n", pci->iommu_table);
|
||||
} else {
|
||||
DBG(" found DMA window, table: %p\n", pci->iommu_table);
|
||||
}
|
||||
|
||||
dev->dev.archdata.dma_data = pci->iommu_table;
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <asm/firmware.h>
|
||||
#include <asm/kexec.h>
|
||||
#include <asm/mpic.h>
|
||||
#include <asm/smp.h>
|
||||
|
||||
#include "pseries.h"
|
||||
#include "xics.h"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user