2005-01-22 17:24:22

by Mikael Pettersson

[permalink] [raw]
Subject: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs

Kernels 2.6.11-rc2 and -rc1 hang during boot on my Beige PowerMac G3.
The last kernel message on the console is:

adb: starting probe task...

At this point the kernel hangs and doesn't respond to any attempt
to invoke SYSRQ or XMON. Normally the subsequent messages would be:

adb devices: [2]: 2 5 [3]: 3 1
ADB keyboard at 2, handler set to 3
Detected ADB keyboard, type ISO, swapping keys.
input: ADB keyboard on adb2:2.05/input
ADB HID on ID 3 not yet registered
ADB mouse at 3, handler set to 2
input: ADB mouse on adb3:3.01/input
adb: finished probe task...

The 2.6.11-rc1 kernel also hung on an eMac (G4). On that machine it
appears the hang occurred in radeonfb: the screen flickers off/on
during radeonfb initialisation, but with 2.6.11-rc1 the screen just
went black. Afterwards the eMac did not respond to any keyboard or
network activity, so I have to assume it hung hard.

I've traced the cause of the hangs to a local_irq_disable() added to
init/main.c:rest_init() in 2.6.10-bk12. Removing it eliminates the
hangs on both the G3 and the eMac:

diff -rupN linux-2.6.11-rc2/init/main.c linux-2.6.11-rc2.ppc32-nohang-fix/init/main.c
--- linux-2.6.11-rc2/init/main.c 2005-01-22 12:08:14.000000000 +0100
+++ linux-2.6.11-rc2.ppc32-nohang-fix/init/main.c 2005-01-22 13:55:07.000000000 +0100
@@ -377,7 +377,7 @@ static void noinline rest_init(void)
* Re-enable preemption but disable interrupts to make sure
* we dont get preempted until we schedule() in cpu_idle().
*/
- local_irq_disable();
+// local_irq_disable();
preempt_enable_no_resched();
unlock_kernel();
cpu_idle();

The hangs occured with unpatched vanilla kernel sources, and I used
a simple no-frills .config with SMP and PREEMPT both off.

/Mikael

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.11-rc2
# Sat Jan 22 16:24:36 2005
#
CONFIG_MMU=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_HAVE_DEC_LOCK=y
CONFIG_PPC=y
CONFIG_PPC32=y
CONFIG_GENERIC_NVRAM=y

#
# Code maturity level options
#
# CONFIG_EXPERIMENTAL is not set
CONFIG_CLEAN_COMPILE=y
CONFIG_BROKEN_ON_SMP=y

#
# General setup
#
CONFIG_LOCALVERSION=""
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
# CONFIG_AUDIT is not set
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_HOTPLUG is not set
# CONFIG_KOBJECT_UEVENT is not set
# CONFIG_IKCONFIG is not set
CONFIG_EMBEDDED=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SHMEM=y
CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0
# CONFIG_TINY_SHMEM is not set

#
# Loadable module support
#
# CONFIG_MODULES is not set

#
# Processor
#
CONFIG_6xx=y
# CONFIG_40x is not set
# CONFIG_44x is not set
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
# CONFIG_8xx is not set
# CONFIG_E500 is not set
CONFIG_ALTIVEC=y
# CONFIG_TAU is not set
# CONFIG_CPU_FREQ is not set
# CONFIG_PPC601_SYNC_FIX is not set
CONFIG_PPC_STD_MMU=y

#
# Platform options
#
CONFIG_PPC_MULTIPLATFORM=y
# CONFIG_APUS is not set
# CONFIG_KATANA is not set
# CONFIG_WILLOW is not set
# CONFIG_CPCI690 is not set
# CONFIG_PCORE is not set
# CONFIG_POWERPMC250 is not set
# CONFIG_CHESTNUT is not set
# CONFIG_SPRUCE is not set
# CONFIG_EV64260 is not set
# CONFIG_LOPEC is not set
# CONFIG_MCPN765 is not set
# CONFIG_MVME5100 is not set
# CONFIG_PPLUS is not set
# CONFIG_PRPMC750 is not set
# CONFIG_PRPMC800 is not set
# CONFIG_SANDPOINT is not set
# CONFIG_ADIR is not set
# CONFIG_K2 is not set
# CONFIG_PAL4 is not set
# CONFIG_GEMINI is not set
# CONFIG_EST8260 is not set
# CONFIG_SBC82xx is not set
# CONFIG_SBS8260 is not set
# CONFIG_RPX8260 is not set
# CONFIG_TQM8260 is not set
# CONFIG_ADS8272 is not set
# CONFIG_PQ2FADS is not set
# CONFIG_LITE5200 is not set
CONFIG_PPC_CHRP=y
CONFIG_PPC_PMAC=y
CONFIG_PPC_PREP=y
CONFIG_PPC_OF=y
CONFIG_PPCBUG_NVRAM=y
# CONFIG_SMP is not set
# CONFIG_PREEMPT is not set
# CONFIG_HIGHMEM is not set
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
CONFIG_PROC_DEVICETREE=y
# CONFIG_PREP_RESIDUAL is not set
# CONFIG_CMDLINE_BOOL is not set

#
# Bus options
#
# CONFIG_ISA is not set
CONFIG_GENERIC_ISA_DMA=y
CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
# CONFIG_PCI_LEGACY_PROC is not set
CONFIG_PCI_NAMES=y

#
# PCCARD (PCMCIA/CardBus) support
#
# CONFIG_PCCARD is not set

#
# PC-card bridges
#

#
# Advanced setup
#
# CONFIG_ADVANCED_OPTIONS is not set

#
# Default settings for advanced configuration options are used
#
CONFIG_HIGHMEM_START=0xfe000000
CONFIG_LOWMEM_SIZE=0x30000000
CONFIG_KERNEL_START=0xc0000000
CONFIG_TASK_SIZE=0x80000000
CONFIG_BOOT_LOAD=0x00800000

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
# CONFIG_FW_LOADER is not set
# CONFIG_DEBUG_DRIVER is not set

#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set

#
# Parallel port support
#
# CONFIG_PARPORT is not set

#
# Plug and Play support
#

#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_MAC_FLOPPY is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_INITRAMFS_SOURCE=""
# CONFIG_LBD is not set
# CONFIG_CDROM_PKTCDVD is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_ATA_OVER_ETH is not set

#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_IDE_SATA is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_IDE_TASK_IOCTL is not set

#
# IDE chipset support/bugfixes
#
# CONFIG_IDE_GENERIC is not set
CONFIG_BLK_DEV_IDEPCI=y
# CONFIG_IDEPCI_SHARE_IRQ is not set
# CONFIG_BLK_DEV_OFFBOARD is not set
# CONFIG_BLK_DEV_GENERIC is not set
# CONFIG_BLK_DEV_SL82C105 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
# CONFIG_IDEDMA_PCI_AUTO is not set
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_SC1200 is not set
# CONFIG_BLK_DEV_PIIX is not set
# CONFIG_BLK_DEV_NS87415 is not set
CONFIG_BLK_DEV_PDC202XX_OLD=y
CONFIG_PDC202XX_BURST=y
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# 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_PMAC is not set
# CONFIG_IDE_ARM is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_BLK_DEV_HD is not set

#
# SCSI device support
#
# CONFIG_SCSI is not set

#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set

#
# Fusion MPT device support
#

#
# IEEE 1394 (FireWire) support
#
# CONFIG_IEEE1394 is not set

#
# I2O device support
#
# CONFIG_I2O is not set

#
# Macintosh device drivers
#
CONFIG_ADB=y
CONFIG_ADB_CUDA=y
# CONFIG_ADB_PMU is not set
# CONFIG_ADB_MACIO is not set
CONFIG_INPUT_ADBHID=y
# CONFIG_MAC_EMUMOUSEBTN is not set
# CONFIG_ANSLCD is not set

#
# Networking support
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
# CONFIG_NETLINK_DEV is not set
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_IP_TCPDIAG is not set
# CONFIG_IP_TCPDIAG_IPV6 is not set
# CONFIG_NETFILTER is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set

#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set

#
# ARCnet devices
#
# CONFIG_ARCNET is not set

#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
# CONFIG_MII is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set

#
# Tulip family network device support
#
CONFIG_NET_TULIP=y
CONFIG_TULIP=y
# CONFIG_TULIP_MMIO is not set
# CONFIG_TULIP_NAPI is not set
# CONFIG_DE4X5 is not set
# CONFIG_WINBOND_840 is not set
# CONFIG_DM9102 is not set
# CONFIG_HP100 is not set
# CONFIG_NET_PCI is not set

#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_R8169 is not set
# CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set

#
# Ethernet (10000 Mbit)
#
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set

#
# Token Ring devices
#
# CONFIG_TR is not set

#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set

#
# Wan interfaces
#
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set

#
# ISDN subsystem
#
# CONFIG_ISDN is not set

#
# Telephony Support
#
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y

#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
# CONFIG_INPUT_EVDEV is not set
# CONFIG_INPUT_EVBUG is not set

#
# Input I/O drivers
#
# CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y
# CONFIG_SERIO is not set
# CONFIG_SERIO_I8042 is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set

#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not set

#
# Non-8250 serial port support
#
# CONFIG_SERIAL_PMACZILOG is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set

#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set

#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
CONFIG_NVRAM=y
CONFIG_GEN_RTC=y
# CONFIG_GEN_RTC_X is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set

#
# Ftape, the floppy tape device driver
#
# CONFIG_AGP is not set
# CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set

#
# I2C support
#
# CONFIG_I2C is not set

#
# Dallas's 1-wire bus
#
# CONFIG_W1 is not set

#
# Misc devices
#

#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set

#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set

#
# Graphics support
#
CONFIG_FB=y
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_CONTROL is not set
# CONFIG_FB_PLATINUM is not set
# CONFIG_FB_VALKYRIE is not set
# CONFIG_FB_CT65550 is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_VGA16 is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON_OLD is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
CONFIG_FB_ATY=y
CONFIG_FB_ATY_CT=y
# CONFIG_FB_ATY_GENERIC_LCD is not set
# CONFIG_FB_ATY_XL_INIT is not set
# CONFIG_FB_ATY_GX is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_VIRTUAL is not set

#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y

#
# Logo configuration
#
# CONFIG_LOGO is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set

#
# Sound
#
# CONFIG_SOUND is not set

#
# USB support
#
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set

#
# Miscellaneous USB options
#
# CONFIG_USB_DEVICEFS is not set
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y

#
# USB Host Controller Drivers
#
# CONFIG_USB_EHCI_HCD is not set
# CONFIG_USB_OHCI_HCD is not set
# CONFIG_USB_UHCI_HCD is not set
# CONFIG_USB_SL811_HCD is not set

#
# USB Device Class drivers
#
# CONFIG_USB_BLUETOOTH_TTY is not set
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set

#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
#
# CONFIG_USB_STORAGE is not set

#
# USB Input Devices
#
CONFIG_USB_HID=y
# CONFIG_USB_HIDINPUT is not set
# CONFIG_USB_HIDDEV is not set
# CONFIG_USB_AIPTEK is not set
# CONFIG_USB_WACOM is not set
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE is not set
# CONFIG_USB_MTOUCH is not set
# CONFIG_USB_EGALAX is not set
# CONFIG_USB_XPAD is not set
# CONFIG_USB_ATI_REMOTE is not set

#
# USB Imaging devices
#

#
# USB Multimedia devices
#
# CONFIG_USB_DABUSB is not set

#
# Video4Linux support is needed for USB Multimedia device support
#

#
# USB Network Adapters
#
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_USBNET is not set

#
# USB port drivers
#

#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set

#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_PHIDGETKIT is not set
# CONFIG_USB_PHIDGETSERVO is not set
# CONFIG_USB_IDMOUSE is not set

#
# USB ATM/DSL drivers
#

#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set

#
# MMC/SD Card support
#
# CONFIG_MMC is not set

#
# InfiniBand support
#
# CONFIG_INFINIBAND is not set

#
# File systems
#
# CONFIG_EXT2_FS is not set
CONFIG_EXT3_FS=y
# CONFIG_EXT3_FS_XATTR is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_QUOTA is not set
# CONFIG_DNOTIFY is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set

#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set

#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_SYSFS=y
# CONFIG_DEVPTS_FS_XATTR is not set
# CONFIG_TMPFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y

#
# Miscellaneous filesystems
#
# CONFIG_HFSPLUS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set

#
# Network File Systems
#
# CONFIG_NFS_FS is not set
# CONFIG_NFSD is not set
# CONFIG_EXPORTFS is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set

#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
CONFIG_MAC_PARTITION=y
# CONFIG_MSDOS_PARTITION is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_EFI_PARTITION is not set

#
# Native Language Support
#
# CONFIG_NLS is not set

#
# Library routines
#
# CONFIG_CRC_CCITT is not set
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set

#
# Kernel hacking
#
CONFIG_DEBUG_KERNEL=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_SCHEDSTATS is not set
CONFIG_DEBUG_SLAB=y
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_FS is not set
CONFIG_XMON=y
# CONFIG_BDI_SWITCH is not set
CONFIG_BOOTX_TEXT=y

#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set

#
# Cryptographic options
#
# CONFIG_CRYPTO is not set

#
# Hardware crypto devices
#


2005-01-23 00:45:47

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs

On Sat, 2005-01-22 at 18:23 +0100, Mikael Pettersson wrote:
> Kernels 2.6.11-rc2 and -rc1 hang during boot on my Beige PowerMac G3.
> The last kernel message on the console is:
>
> adb: starting probe task...
>
> At this point the kernel hangs and doesn't respond to any attempt
> to invoke SYSRQ or XMON. Normally the subsequent messages would be:
>
> adb devices: [2]: 2 5 [3]: 3 1
> ADB keyboard at 2, handler set to 3
> Detected ADB keyboard, type ISO, swapping keys.
> input: ADB keyboard on adb2:2.05/input
> ADB HID on ID 3 not yet registered
> ADB mouse at 3, handler set to 2
> input: ADB mouse on adb3:3.01/input
> adb: finished probe task...
>
> The 2.6.11-rc1 kernel also hung on an eMac (G4). On that machine it
> appears the hang occurred in radeonfb: the screen flickers off/on
> during radeonfb initialisation, but with 2.6.11-rc1 the screen just
> went black. Afterwards the eMac did not respond to any keyboard or
> network activity, so I have to assume it hung hard.
>
> I've traced the cause of the hangs to a local_irq_disable() added to
> init/main.c:rest_init() in 2.6.10-bk12. Removing it eliminates the
> hangs on both the G3 and the eMac:

I know about this problem, I'm working on a proper fix. Thanks for your
report.

Ben.


2005-01-24 01:27:48

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs

On Sun, 2005-01-23 at 11:43 +1100, Benjamin Herrenschmidt wrote:

> I know about this problem, I'm working on a proper fix. Thanks for your
> report.

Can you send me the PVR value for both of these CPUs
(cat /proc/cpuinfo) ? I can't find right now why they would lock up
unless the default idle loop is _not_ run properly, that is for some
reason, NAP or DOZE mode end up not beeing enabled. Can you send me
your .config as well ?

Finally, try that patch and tell me if it makes a difference. It makes
sure we re-enable interrupts in cpu_idle, and thus should only be a
workaround. I found _one_ actual code path where we fail to re-enable
them, and this is when neither DOZE nor NAP mode is enabled, which
should not happen on any G3 (they should all support DOZE mode), and
might happe non some G4s if the chipset doesn't support NAP or
powersave_nap is set to 0 in proc, but that shouldn't be the case of an
eMac neither...

--- linux-work.orig/arch/ppc/kernel/idle.c 2005-01-24 11:42:35.000000000 +1100
+++ linux-work/arch/ppc/kernel/idle.c 2005-01-24 12:19:41.114353760 +1100
@@ -39,17 +39,15 @@
powersave = ppc_md.power_save;

if (!need_resched()) {
+ local_irq_enable();
if (powersave != NULL)
powersave();
else {
#ifdef CONFIG_SMP
set_thread_flag(TIF_POLLING_NRFLAG);
- local_irq_enable();
while (!need_resched())
barrier();
clear_thread_flag(TIF_POLLING_NRFLAG);
-#else
- local_irq_enable();
#endif
}
}

Ben.


2005-01-24 17:42:55

by Mikael Pettersson

[permalink] [raw]
Subject: Re: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs

Benjamin Herrenschmidt writes:
> On Sun, 2005-01-23 at 11:43 +1100, Benjamin Herrenschmidt wrote:
>
> > I know about this problem, I'm working on a proper fix. Thanks for your
> > report.
>
> Can you send me the PVR value for both of these CPUs
> (cat /proc/cpuinfo) ? I can't find right now why they would lock up
> unless the default idle loop is _not_ run properly, that is for some
> reason, NAP or DOZE mode end up not beeing enabled. Can you send me
> your .config as well ?

=== cpuinfo.emac ===
processor : 0
cpu : 7447/7457, altivec supported
clock : 1249MHz
revision : 1.1 (pvr 8002 0101)
bogomips : 830.66
machine : PowerMac6,4
motherboard : PowerMac6,4 MacRISC3 Power Macintosh
detected as : 287 (Unknown Intrepid-based)
pmac flags : 00000000
L2 cache : 512K unified
memory : 256MB
pmac-generation : NewWorld

=== cpuinfo.beige-g3 ===
processor : 0
cpu : 7455, altivec supported (a Sonnet G4 upgrade processor)
clock : 66MHz <-- bogus, is 1.0GHz in reality
revision : 2.1 (pvr 8001 0201)
bogomips : 999.42
machine : Power Macintosh
motherboard : AAPL,Gossamer MacRISC
detected as : 48 (PowerMac G3 (Gossamer))
pmac flags : 00000000
memory : 768MB
pmac-generation : OldWorld

The .config files are a bit big, I'm sending them off-list.

> Finally, try that patch and tell me if it makes a difference. It makes
> sure we re-enable interrupts in cpu_idle, and thus should only be a
> workaround. I found _one_ actual code path where we fail to re-enable
> them, and this is when neither DOZE nor NAP mode is enabled, which
> should not happen on any G3 (they should all support DOZE mode), and
> might happe non some G4s if the chipset doesn't support NAP or
> powersave_nap is set to 0 in proc, but that shouldn't be the case of an
> eMac neither...
>
> --- linux-work.orig/arch/ppc/kernel/idle.c 2005-01-24 11:42:35.000000000 +1100
> +++ linux-work/arch/ppc/kernel/idle.c 2005-01-24 12:19:41.114353760 +1100
> @@ -39,17 +39,15 @@
> powersave = ppc_md.power_save;
>
> if (!need_resched()) {
> + local_irq_enable();
> if (powersave != NULL)
> powersave();
> else {
> #ifdef CONFIG_SMP
> set_thread_flag(TIF_POLLING_NRFLAG);
> - local_irq_enable();
> while (!need_resched())
> barrier();
> clear_thread_flag(TIF_POLLING_NRFLAG);
> -#else
> - local_irq_enable();
> #endif
> }
> }

Yes, this patch made the eMac boot Ok -- I can't test the Beige G3 until Friday.

/Mikael

2005-01-25 03:25:55

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs

On Mon, 2005-01-24 at 18:42 +0100, Mikael Pettersson wrote:
> Benjamin Herrenschmidt writes:
> > On Sun, 2005-01-23 at 11:43 +1100, Benjamin Herrenschmidt wrote:
> >
> > > I know about this problem, I'm working on a proper fix. Thanks for your
> > > report.
> >
> > Can you send me the PVR value for both of these CPUs
> > (cat /proc/cpuinfo) ? I can't find right now why they would lock up
> > unless the default idle loop is _not_ run properly, that is for some
> > reason, NAP or DOZE mode end up not beeing enabled. Can you send me
> > your .config as well ?
>
> === cpuinfo.emac ===
> processor : 0
> cpu : 7447/7457, altivec supported
> clock : 1249MHz
> revision : 1.1 (pvr 8002 0101)
> bogomips : 830.66
> machine : PowerMac6,4
> motherboard : PowerMac6,4 MacRISC3 Power Macintosh
> detected as : 287 (Unknown Intrepid-based)
> pmac flags : 00000000
> L2 cache : 512K unified
> memory : 256MB
> pmac-generation : NewWorld

Ok, it's normal that the Beige G3 doesn't do NAP, and the 7455 cannot do
DOZE, so I suspect it's all normal and my patch fixes it.

However, the eMac should have been doing NAP. Can you check what's up in
arch/ppc/plaform/pmac_feature.c with powersave_nap ? is it set at all ?
It should be visible from userland at /proc/sys/kernel/powersave-nap
and should be set to 1 by default on your machine... unless your cpu
node in the device-tree has the "flush-on-lock" property...

Ben.


2005-01-25 08:56:51

by Mikael Pettersson

[permalink] [raw]
Subject: Re: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs

Benjamin Herrenschmidt writes:
> On Mon, 2005-01-24 at 18:42 +0100, Mikael Pettersson wrote:
> > Benjamin Herrenschmidt writes:
> > > On Sun, 2005-01-23 at 11:43 +1100, Benjamin Herrenschmidt wrote:
> > >
> > > > I know about this problem, I'm working on a proper fix. Thanks for your
> > > > report.
> > >
> > > Can you send me the PVR value for both of these CPUs
> > > (cat /proc/cpuinfo) ? I can't find right now why they would lock up
> > > unless the default idle loop is _not_ run properly, that is for some
> > > reason, NAP or DOZE mode end up not beeing enabled. Can you send me
> > > your .config as well ?
> >
> > === cpuinfo.emac ===
> > processor : 0
> > cpu : 7447/7457, altivec supported
> > clock : 1249MHz
> > revision : 1.1 (pvr 8002 0101)
> > bogomips : 830.66
> > machine : PowerMac6,4
> > motherboard : PowerMac6,4 MacRISC3 Power Macintosh
> > detected as : 287 (Unknown Intrepid-based)
> > pmac flags : 00000000
> > L2 cache : 512K unified
> > memory : 256MB
> > pmac-generation : NewWorld
>
> Ok, it's normal that the Beige G3 doesn't do NAP, and the 7455 cannot do
> DOZE, so I suspect it's all normal and my patch fixes it.
>
> However, the eMac should have been doing NAP. Can you check what's up in
> arch/ppc/plaform/pmac_feature.c with powersave_nap ? is it set at all ?
> It should be visible from userland at /proc/sys/kernel/powersave-nap
> and should be set to 1 by default on your machine... unless your cpu
> node in the device-tree has the "flush-on-lock" property...

On the eMac:
/proc/sys/kernel/powersave-nap exists and contains "0".
/proc/device-tree/cpus/PowerPC,G4/flush-on-lock exists as an empty file.

/Mikael

2005-01-25 23:51:11

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs

On Tue, 2005-01-25 at 09:56 +0100, Mikael Pettersson wrote:

> On the eMac:
> /proc/sys/kernel/powersave-nap exists and contains "0".
> /proc/device-tree/cpus/PowerPC,G4/flush-on-lock exists as an empty file.

Ok, that is weird... so for some reason, Apple decided not to allow the
eMac to do NAP mode, and thus to power manage the CPU when idle...

Ben.


2005-01-26 10:03:47

by Mikael Pettersson

[permalink] [raw]
Subject: Re: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs

Benjamin Herrenschmidt writes:
> On Tue, 2005-01-25 at 09:56 +0100, Mikael Pettersson wrote:
>
> > On the eMac:
> > /proc/sys/kernel/powersave-nap exists and contains "0".
> > /proc/device-tree/cpus/PowerPC,G4/flush-on-lock exists as an empty file.
>
> Ok, that is weird... so for some reason, Apple decided not to allow the
> eMac to do NAP mode, and thus to power manage the CPU when idle...

I assumed it was due to the UniNorth issue that pmac_feature.c mentions.

/Mikael

2005-01-26 13:52:46

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs

On Wed, 2005-01-26 at 11:02 +0100, Mikael Pettersson wrote:
> Benjamin Herrenschmidt writes:
> > On Tue, 2005-01-25 at 09:56 +0100, Mikael Pettersson wrote:
> >
> > > On the eMac:
> > > /proc/sys/kernel/powersave-nap exists and contains "0".
> > > /proc/device-tree/cpus/PowerPC,G4/flush-on-lock exists as an empty file.
> >
> > Ok, that is weird... so for some reason, Apple decided not to allow the
> > eMac to do NAP mode, and thus to power manage the CPU when idle...
>
> I assumed it was due to the UniNorth issue that pmac_feature.c mentions.

Not clear. I would expect the eMac to run with a fairly recent revision
of UniNorth with no issue, and since it's not an SMP machine there
should be no problem...

On the other hand, I also suspect that the whole NAP thing does have a
small impact on performances, so that may be the reason they chose not
to do it on this HW...

Ben.


2005-01-27 00:12:16

by Sylvain Munaut

[permalink] [raw]
Subject: Re: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs

Benjamin Herrenschmidt wrote:

>On Sun, 2005-01-23 at 11:43 +1100, Benjamin Herrenschmidt wrote:
>
>
>
>>I know about this problem, I'm working on a proper fix. Thanks for your
>>report.
>>
>>
>
>Can you send me the PVR value for both of these CPUs
>(cat /proc/cpuinfo) ? I can't find right now why they would lock up
>unless the default idle loop is _not_ run properly, that is for some
>reason, NAP or DOZE mode end up not beeing enabled. Can you send me
>your .config as well ?
>
>
Note that when CONFIG_BDI_SWITCH is set, they both end up disabled
because nap & doze seems to perturb the BDI on some cores.

So there is a problem in that case ....

>Finally, try that patch and tell me if it makes a difference.
>
Yup
- Without it hangs (not really, it's still half running but serial
output is stuck
due to no interrupts)
- With it it works


Sylvain

2005-01-27 00:16:49

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs

On Wed, 2005-01-26 at 22:33 +0100, Sylvain Munaut wrote:

> >Finally, try that patch and tell me if it makes a difference.
> >
> Yup
> - Without it hangs (not really, it's still half running but serial
> output is stuck
> due to no interrupts)
> - With it it works

Well, in the meantime, Ingo made a proper fix to rest_init()

Ben.