From e44df42863b8adc152fc405a8cbde684d4d672e5 Mon Sep 17 00:00:00 2001 From: Geoff Levand Date: Wed, 26 Aug 2009 21:57:24 +0000 Subject: [PATCH 1/1] ps3: Update kernel to linux-2.6.30 Signed-off-by: Geoff Levand SVN-Revision: 17411 --- target/linux/ps3/Makefile | 2 +- target/linux/ps3/config-2.6.30 | 359 ++++++++++++++++++ .../0016-ps3-gelic-fix-rxdmac.patch | 89 +++++ 3 files changed, 449 insertions(+), 1 deletion(-) create mode 100644 target/linux/ps3/config-2.6.30 create mode 100644 target/linux/ps3/patches-2.6.30/0016-ps3-gelic-fix-rxdmac.patch diff --git a/target/linux/ps3/Makefile b/target/linux/ps3/Makefile index b59e161582..6c10beaf4a 100644 --- a/target/linux/ps3/Makefile +++ b/target/linux/ps3/Makefile @@ -13,7 +13,7 @@ MAINTAINER:=Geoff Levand SUBTARGETS=petitboot FEATURES+=powerpc64 -LINUX_VERSION:=2.6.28.10 +LINUX_VERSION:=2.6.30.5 KERNEL_CC:= diff --git a/target/linux/ps3/config-2.6.30 b/target/linux/ps3/config-2.6.30 new file mode 100644 index 0000000000..12a46c896a --- /dev/null +++ b/target/linux/ps3/config-2.6.30 @@ -0,0 +1,359 @@ +CONFIG_64BIT=y +CONFIG_ALTIVEC=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_ARCH_HAS_ILOG2_U32=y +CONFIG_ARCH_HAS_ILOG2_U64=y +CONFIG_ARCH_HAS_WALK_MEMORY=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_ARCH_MEMORY_PROBE=y +CONFIG_ARCH_NO_VIRT_TO_BUS=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_POPULATES_NODE_MAP=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +# CONFIG_ARCH_SUPPORTS_MSI is not set +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +# CONFIG_ARPD is not set +CONFIG_AUDIT_ARCH=y +CONFIG_BASE_SMALL=0 +# CONFIG_BINARY_PRINTF is not set +CONFIG_BITREVERSE=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65535 +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BLOCK_COMPAT=y +# CONFIG_BOOTX_TEXT is not set +CONFIG_BOUNCE=y +# CONFIG_BRIDGE is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_CGROUP_SCHED is not set +CONFIG_CMDLINE="" +CONFIG_CMDLINE_BOOL=y +CONFIG_COMPAT=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_COMPAT_BRK=y +CONFIG_CONSOLE_TRANSLATIONS=y +# CONFIG_CPU_FREQ is not set +# CONFIG_CRASH_DUMP is not set +CONFIG_CRC16=y +# CONFIG_CRYPTO is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_DEFAULT_UIMAGE is not set +CONFIG_DEVKMEM=y +CONFIG_DNOTIFY=y +CONFIG_DTC=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_EARLY_PRINTK=y +# CONFIG_EDAC is not set +CONFIG_ELF_CORE=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +# CONFIG_EXT4DEV_COMPAT is not set +CONFIG_EXT4_FS=y +# CONFIG_EXT4_FS_XATTR is not set +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_FAT_FS=y +CONFIG_FB=y +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_BROADSHEET is not set +# CONFIG_FB_CFB_COPYAREA is not set +# CONFIG_FB_CFB_FILLRECT is not set +# CONFIG_FB_CFB_IMAGEBLIT is not set +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_OF is not set +CONFIG_FB_PS3=y +CONFIG_FB_PS3_DEFAULT_SIZE_M=9 +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_SVGALIB is not set +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_TILEBLITTING is not set +# CONFIG_FB_VGA16 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FLATMEM_MANUAL is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +CONFIG_FORCE_MAX_ZONEORDER=13 +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FRAME_WARN=2048 +# CONFIG_FSL_ULI1575 is not set +CONFIG_GELIC_NET=y +# CONFIG_GELIC_WIRELESS is not set +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_GENERIC_FIND_NEXT_BIT=y +# CONFIG_GENERIC_IOMAP is not set +CONFIG_GENERIC_ISA_DMA=y +# CONFIG_GENERIC_TBSYNC is not set +CONFIG_GENERIC_TIME_VSYSCALL=y +# CONFIG_GEN_RTC is not set +CONFIG_GROUP_SCHED=y +# CONFIG_HAMRADIO is not set +# CONFIG_HANGCHECK_TIMER is not set +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +# CONFIG_HAS_RAPIDIO is not set +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HAVE_IDE=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_HAVE_LMB=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_HAVE_MLOCK=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HAVE_SYSCALL_WRAPPERS=y +CONFIG_HID=y +CONFIG_HID_APPLE=y +CONFIG_HID_BELKIN=y +CONFIG_HID_CHERRY=y +CONFIG_HID_EZKEY=y +CONFIG_HID_LOGITECH=y +CONFIG_HID_MICROSOFT=y +CONFIG_HID_SONY=y +CONFIG_HID_SUNPLUS=y +CONFIG_HID_SUPPORT=y +# CONFIG_HIGH_RES_TIMERS is not set +# CONFIG_HUGETLBFS is not set +CONFIG_HW_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_I2C is not set +CONFIG_INITRAMFS_ROOT_GID=500 +CONFIG_INITRAMFS_ROOT_UID=500 +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_INPUT=y +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_YEALINK is not set +CONFIG_IOMMU_HELPER=y +# CONFIG_IOMMU_VMERGE is not set +# CONFIG_IPIC is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_MULTICAST is not set +# CONFIG_IRQSTACKS is not set +# CONFIG_IRQ_ALL_CPUS is not set +CONFIG_IRQ_PER_CPU=y +CONFIG_ISA_DMA_API=y +# CONFIG_ISDN is not set +CONFIG_ISO9660_FS=y +CONFIG_JBD=y +CONFIG_JBD2=y +# CONFIG_JOYSTICK_A3D is not set +# CONFIG_JOYSTICK_ADI is not set +# CONFIG_JOYSTICK_ANALOG is not set +# CONFIG_JOYSTICK_COBRA is not set +# CONFIG_JOYSTICK_GF2K is not set +# CONFIG_JOYSTICK_GRIP is not set +# CONFIG_JOYSTICK_GRIP_MP is not set +# CONFIG_JOYSTICK_GUILLEMOT is not set +# CONFIG_JOYSTICK_IFORCE is not set +# CONFIG_JOYSTICK_INTERACT is not set +# CONFIG_JOYSTICK_JOYDUMP is not set +# CONFIG_JOYSTICK_MAGELLAN is not set +# CONFIG_JOYSTICK_SIDEWINDER is not set +# CONFIG_JOYSTICK_SPACEBALL is not set +# CONFIG_JOYSTICK_SPACEORB is not set +# CONFIG_JOYSTICK_STINGER is not set +# CONFIG_JOYSTICK_TMDC is not set +# CONFIG_JOYSTICK_TWIDJOY is not set +# CONFIG_JOYSTICK_WARRIOR is not set +# CONFIG_JOYSTICK_XPAD is not set +# CONFIG_JOYSTICK_ZHENHUA is not set +CONFIG_KERNEL_START=0xc000000000000000 +CONFIG_KEXEC=y +# CONFIG_LEDS_TRIGGERS is not set +CONFIG_LOCK_KERNEL=y +# CONFIG_LOGO is not set +CONFIG_LOG_BUF_SHIFT=15 +# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTPLUG_SPARSE=y +# CONFIG_MEMORY_HOTREMOVE is not set +CONFIG_MIGRATION=y +# CONFIG_MINI_FO is not set +# CONFIG_MISC_DEVICES is not set +# CONFIG_MMIO_NVRAM is not set +# CONFIG_MPIC is not set +# CONFIG_MPIC_WEIRD is not set +CONFIG_MSDOS_FS=y +# CONFIG_MTD is not set +# CONFIG_NETFILTER is not set +# CONFIG_NETWORK_FILESYSTEMS is not set +# CONFIG_NET_ETHERNET is not set +CONFIG_NLS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NR_CPUS=2 +# CONFIG_NUMA is not set +CONFIG_OF=y +CONFIG_OF_DEVICE=y +# CONFIG_PACKET_MMAP is not set +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_PAGE_OFFSET=0xc000000000000000 +# CONFIG_PARTITION_ADVANCED is not set +# CONFIG_PCI_DOMAINS is not set +# CONFIG_PCI_SYSCALL is not set +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_POWER3=y +CONFIG_POWER4=y +# CONFIG_POWER4_ONLY is not set +CONFIG_PPC=y +CONFIG_PPC64=y +# CONFIG_PPC_970_NAP is not set +CONFIG_PPC_BOOK3S=y +CONFIG_PPC_CELL=y +# CONFIG_PPC_CELLEB is not set +# CONFIG_PPC_CELL_NATIVE is not set +# CONFIG_PPC_CELL_QPACE is not set +# CONFIG_PPC_CLOCK is not set +# CONFIG_PPC_DCR_MMIO is not set +# CONFIG_PPC_DCR_NATIVE is not set +# CONFIG_PPC_EARLY_DEBUG is not set +CONFIG_PPC_FPU=y +# CONFIG_PPC_HAS_HASH_64K is not set +# CONFIG_PPC_I8259 is not set +# CONFIG_PPC_IBM_CELL_BLADE is not set +# CONFIG_PPC_INDIRECT_IO is not set +# CONFIG_PPC_ISERIES is not set +# CONFIG_PPC_MAPLE is not set +# CONFIG_PPC_MM_SLICES is not set +# CONFIG_PPC_MPC106 is not set +CONFIG_PPC_OF=y +# CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set +# CONFIG_PPC_PASEMI is not set +CONFIG_PPC_PCI_CHOICE=y +# CONFIG_PPC_PMAC is not set +CONFIG_PPC_PS3=y +# CONFIG_PPC_PSERIES is not set +# CONFIG_PPC_RTAS is not set +CONFIG_PPC_STD_MMU=y +CONFIG_PPC_STD_MMU_64=y +# CONFIG_PPC_UDBG_16550 is not set +# CONFIG_PQ2ADS is not set +CONFIG_PRINT_STACK_DEPTH=64 +CONFIG_PROC_DEVICETREE=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PS3_ADVANCED=y +CONFIG_PS3_DISK=y +# CONFIG_PS3_DYNAMIC_DMA is not set +CONFIG_PS3_FLASH=y +CONFIG_PS3_HTAB_SIZE=20 +# CONFIG_PS3_LPM is not set +CONFIG_PS3_PS3AV=y +CONFIG_PS3_ROM=y +CONFIG_PS3_STORAGE=y +CONFIG_PS3_SYS_MANAGER=y +# CONFIG_PS3_VRAM is not set +CONFIG_PS3_VUART=y +# CONFIG_RD_LZMA is not set +# CONFIG_RELOCATABLE is not set +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +# CONFIG_SCHED_HRTICK is not set +CONFIG_SCHED_OMIT_FRAME_POINTER=y +# CONFIG_SCHED_SMT is not set +CONFIG_SCSI=y +# CONFIG_SCSI_LOWLEVEL is not set +# CONFIG_SCSI_PROC_FS is not set +# CONFIG_SERIAL_8250 is not set +# CONFIG_SLOW_WORK is not set +CONFIG_SMP=y +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_MANUAL=y +# CONFIG_SPARSEMEM_VMEMMAP is not set +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +# CONFIG_SPU_BASE is not set +# CONFIG_SPU_FS is not set +# CONFIG_SQUASHFS is not set +CONFIG_STOP_MACHINE=y +# CONFIG_SWAP is not set +# CONFIG_SYSCTL_SYSCALL_CHECK is not set +CONFIG_SYSVIPC_COMPAT=y +# CONFIG_TEXTSEARCH is not set +CONFIG_TRACING_SUPPORT=y +CONFIG_TUNE_CELL=y +# CONFIG_U3_DART is not set +CONFIG_USB=y +# CONFIG_USB_DEVICEFS is not set +CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_PPC_OF=y +# CONFIG_USB_EHCI_ROOT_HUB_TT is not set +CONFIG_USB_HID=y +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_OHCI_HCD=y +# CONFIG_USB_OHCI_HCD_PPC_OF is not set +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_USBAT is not set +CONFIG_USB_SUPPORT=y +CONFIG_USER_SCHED=y +CONFIG_USE_GENERIC_SMP_HELPERS=y +CONFIG_VFAT_FS=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_VIDEO_OUTPUT_CONTROL=y +CONFIG_VIRT_CPU_ACCOUNTING=y +# CONFIG_VLAN_8021Q is not set +CONFIG_VM_EVENT_COUNTERS=y +# CONFIG_VSX is not set +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +# CONFIG_WATCHDOG is not set +# CONFIG_WIRELESS is not set +# CONFIG_WLAN_80211 is not set +CONFIG_WORD_SIZE=64 +# CONFIG_ZISOFS is not set diff --git a/target/linux/ps3/patches-2.6.30/0016-ps3-gelic-fix-rxdmac.patch b/target/linux/ps3/patches-2.6.30/0016-ps3-gelic-fix-rxdmac.patch new file mode 100644 index 0000000000..00204e374e --- /dev/null +++ b/target/linux/ps3/patches-2.6.30/0016-ps3-gelic-fix-rxdmac.patch @@ -0,0 +1,89 @@ +Subject: net/ps3_gelic: Fix RX DMA restart + +Fix the condition where PS3 network RX hangs when no network +TX is occuring by calling gelic_card_enable_rxdmac() during +RX_DMA_CHAIN_END event processing. + +The gelic hardware automatically clears its RX_DMA_EN flag when +it detects an RX_DMA_CHAIN_END event. In its processing of +RX_DMA_CHAIN_END the gelic driver is required to set RX_DMA_EN +(with a call to gelic_card_enable_rxdmac()) to restart RX DMA +transfers. The existing gelic driver code does not set +RX_DMA_EN directly in its processing of the RX_DMA_CHAIN_END +event, but uses a flag variable card->rx_dma_restart_required +to schedule the setting of RX_DMA_EN until next inside the +interrupt handler. + +It seems this delayed setting of RX_DMA_EN causes the hang since +the next RX interrupt after the RX_DMA_CHAIN_END event where +RX_DMA_EN is scheduled to be set will not occur since RX_DMA_EN +was not set. In the case were network TX is occuring, RX_DMA_EN +is set in the next TX interrupt and RX processing continues. + +Signed-off-by: Geoff Levand +--- + drivers/net/ps3_gelic_net.c | 21 ++++++++------------- + drivers/net/ps3_gelic_net.h | 1 - + 2 files changed, 8 insertions(+), 14 deletions(-) + +--- a/drivers/net/ps3_gelic_net.c ++++ b/drivers/net/ps3_gelic_net.c +@@ -970,10 +970,6 @@ static int gelic_card_decode_one_descr(s + int dmac_chain_ended; + + status = gelic_descr_get_status(descr); +- /* is this descriptor terminated with next_descr == NULL? */ +- dmac_chain_ended = +- be32_to_cpu(descr->dmac_cmd_status) & +- GELIC_DESCR_RX_DMA_CHAIN_END; + + if (status == GELIC_DESCR_DMA_CARDOWNED) + return 0; +@@ -1036,6 +1032,11 @@ static int gelic_card_decode_one_descr(s + /* ok, we've got a packet in descr */ + gelic_net_pass_skb_up(descr, card, netdev); + refill: ++ ++ /* is the current descriptor terminated with next_descr == NULL? */ ++ dmac_chain_ended = ++ be32_to_cpu(descr->dmac_cmd_status) & ++ GELIC_DESCR_RX_DMA_CHAIN_END; + /* + * So that always DMAC can see the end + * of the descriptor chain to avoid +@@ -1064,10 +1065,9 @@ refill: + * If dmac chain was met, DMAC stopped. + * thus re-enable it + */ +- if (dmac_chain_ended) { +- card->rx_dma_restart_required = 1; +- dev_dbg(ctodev(card), "reenable rx dma scheduled\n"); +- } ++ ++ if (dmac_chain_ended) ++ gelic_card_enable_rxdmac(card); + + return 1; + } +@@ -1133,11 +1133,6 @@ static irqreturn_t gelic_card_interrupt( + + status &= card->irq_mask; + +- if (card->rx_dma_restart_required) { +- card->rx_dma_restart_required = 0; +- gelic_card_enable_rxdmac(card); +- } +- + if (status & GELIC_CARD_RXINT) { + gelic_card_rx_irq_off(card); + napi_schedule(&card->napi); +--- a/drivers/net/ps3_gelic_net.h ++++ b/drivers/net/ps3_gelic_net.h +@@ -284,7 +284,6 @@ struct gelic_card { + + struct gelic_descr_chain tx_chain; + struct gelic_descr_chain rx_chain; +- int rx_dma_restart_required; + int rx_csum; + /* + * tx_lock guards tx descriptor list and -- 2.30.2