Greetings, An on-and-off effort since yesterday finally got 2.3.99pre7-8 to boot this morning, the attached patch was necessary.
Why am I building 2.3? The main reason is that it will finally support my Cirrus-Logic-based MacPicasso 540 video card. So let's start with that. * clgenfb doesn't start on PPC, it oopses in vga16_init (after guessing the board has 32 MB RAM when it has 4). I've sent the ksymoops output to linux-fbdev, so the author is aware of the problem. Built as a module, insmod hangs the system with the same message, minus the oops. (For some reason I can't figure out, gcc gave me a parse error on the LINUX_VERSION_CODE #ifs, so I had to make them #if 0 and #if 1.) * atyfb still doesn't support Xfb with accels properly, same problems as 2.2. A new one: xscreensaver reports: "X SERVER BUG: 1152x864 viewport at 289,-291 is impossible" * The ide-pmac.c, mac_keyb.c, pmac_setup.c and ppc_ksyms.c patch hunks correct minor oversights, configuration permutations not anticipated by the authors. * include/asm-ppc/string.h needs those function prototypes, since include/linux/string.h doesn't provide them when __HAVE_ARCH_* is defined. Contrary to my post yesterday, those __HAVE_ARCH_* flags are necessary to prevent lib/string.c from conflicting with arch/ppc/lib/string.S. * The dmasound_awacs hunk is from Ani Joshi; built as a module it can't install without nvram, so drivers/sound/Config.in should make Mac DMA sound depend on CONFIG_NVRAM. (I don't know if that will make sound work, it's building with nvram at home now, I'll test it tonight.) * SCSI generic on MESH seems to be broken in the same way as it is in 2.2. (Is there an egcs .deb somewhere, or gcc272, or will I have to wait for the next compiler release in woody? It's annoying to have SCSI generic broken on Debian PPC because of a compiler problem.) * The big showstopper for me is that PPP doesn't work. Chat dials just fine, but as soon as it sends the password to my ISP, the connection goes down. In /var/log/messages, chat indicates it's sent the password, pppd prints "Serial connection established." and then exits with SIGHUP. * A GNOME session from gdm kills X when I move the mouse during ssh-password-gnome, but this may be a sound issue, I'll test with working dmasound later (hopefully). So, that's what I know... I'll report again tonight after testing sound with nvram built in. -Adam P.
--- drivers/ide/ide-pmac.c.bak Tue May 9 12:11:32 2000 +++ drivers/ide/ide-pmac.c Tue May 9 12:12:57 2000 @@ -402,11 +402,11 @@ feature_clear(np, FEATURE_IDE0_reset); break; case 1: - feature_set(np, FEATURE_Mediabay_IDE_reset); + feature_set(np, FEATURE_IDE1_reset); mdelay(10); - feature_set(np, FEATURE_Mediabay_IDE_enable); + feature_set(np, FEATURE_IDE1_enable); mdelay(10); - feature_clear(np, FEATURE_Mediabay_IDE_reset); + feature_clear(np, FEATURE_IDE1_reset); break; case 2: /* This one exists only for KL, I don't know about any --- drivers/sound/dmasound/dmasound_awacs.c.bak Tue May 9 19:04:34 2000 +++ drivers/sound/dmasound/dmasound_awacs.c Tue May 9 19:11:06 2000 @@ -17,6 +17,7 @@ #include <linux/adb.h> #include <linux/nvram.h> #include <linux/vt_kern.h> +#include <linux/pmu.h> #include <linux/cuda.h> #include <asm/uaccess.h> @@ -24,6 +25,8 @@ #include <asm/machdep.h> #include <asm/io.h> #include <asm/dbdma.h> +#include <asm/feature.h> +#include <asm/irq.h> #include "awacs_defs.h" #include "dmasound.h" @@ -1586,9 +1589,8 @@ case SOUND_MIXER_READ_DEVMASK: data = SOUND_MASK_VOLUME | SOUND_MASK_SPEAKER | SOUND_MASK_LINE | SOUND_MASK_MIC - | SOUND_MASK_CD | SOUND_MASK_RECLEV - | SOUND_MASK_ALTPCM - | SOUND_MASK_MONITOR; + | SOUND_MASK_CD | SOUND_MASK_ALTPCM + | SOUND_MASK_RECLEV; return IOCTL_OUT(arg, data); case SOUND_MIXER_READ_RECMASK: data = SOUND_MASK_LINE | SOUND_MASK_MIC --- drivers/macintosh/mac_keyb.c.bak Tue May 9 20:33:07 2000 +++ drivers/macintosh/mac_keyb.c Tue May 9 20:39:37 2000 @@ -586,7 +586,9 @@ #endif /* CONFIG_ADBMOUSE */ /* XXX Needs to get rid of this, see comments in pmu.c */ +#ifdef CONFIG_ADB_PMU extern int backlight_level; +#endif static void buttons_input(unsigned char *data, int nb, struct pt_regs *regs, int autopoll) @@ -627,7 +629,7 @@ /* brightness decrease */ case 0xa: /* down event */ -#ifdef CONFIG_PPC +#ifdef CONFIG_ADB_PMU if ( data[1] == (data[1]&0xf) ) { if (backlight_level > 2) pmu_set_brightness(backlight_level-2); @@ -639,7 +641,7 @@ /* brightness increase */ case 0x9: /* down event */ -#ifdef CONFIG_PPC +#ifdef CONFIG_ADB_PMU if ( data[1] == (data[1]&0xf) ) { if (backlight_level < 0x1e) pmu_set_brightness(backlight_level+2); --- arch/ppc/kernel/pmac_setup.c.bak Tue May 9 21:50:32 2000 +++ arch/ppc/kernel/pmac_setup.c Tue May 9 21:52:25 2000 @@ -506,7 +506,9 @@ struct adb_request req; #endif /* CONFIG_ADB_CUDA */ +#ifdef CONFIG_NVRAM pmac_nvram_update(); +#endif switch (sys_ctrler) { #ifdef CONFIG_ADB_CUDA @@ -533,7 +535,9 @@ struct adb_request req; #endif /* CONFIG_ADB_CUDA */ +#ifdef CONFIG_NVRAM pmac_nvram_update(); +#endif switch (sys_ctrler) { #ifdef CONFIG_ADB_CUDA --- drivers/video/clgenfb.c.bak Tue May 9 22:24:03 2000 +++ drivers/video/clgenfb.c Tue May 9 22:27:21 2000 @@ -78,7 +78,7 @@ */ /* enable debug output? */ -/* #define CLGEN_DEBUG 1 */ +#define CLGEN_DEBUG 1 /* disable runtime assertions? */ /* #define CLGEN_NDEBUG */ @@ -2526,7 +2526,7 @@ /* This is a best-guess for now */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,13) +#if 0 *display = pdev->base_address[0]; if ((*display & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO) { @@ -2648,7 +2648,7 @@ board_size = clgen_get_memsize (info->regs); } -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,3,13) +#if 1 if (!request_mem_region(board_addr, board_size, "clgenfb")) { pci_write_config_word (pdev, PCI_COMMAND, tmp16); @@ -2924,9 +2924,9 @@ switch_monitor (info, 0); clgen_zorro_unmap (info); -#else +#elif defined(MODULE) clgen_pci_unmap (info); -#endif /* CONFIG_ZORRO */ +#endif /* CONFIG_ZORRO or MODULE */ unregister_framebuffer ((struct fb_info *) info); printk ("Framebuffer unregistered\n"); --- include/asm-ppc/string.h.bak Tue May 9 19:01:23 2000 +++ include/asm-ppc/string.h Tue May 9 22:35:18 2000 @@ -2,16 +2,26 @@ #define _PPC_STRING_H_ #define __HAVE_ARCH_STRCPY +extern char * strcpy(char *,const char *); #define __HAVE_ARCH_STRNCPY +extern char * strncpy(char *,const char *, __kernel_size_t); #define __HAVE_ARCH_STRLEN +extern __kernel_size_t strlen(const char *); #define __HAVE_ARCH_STRCMP +extern int strcmp(const char *,const char *); #define __HAVE_ARCH_STRCAT +extern char * strcat(char *, const char *); #define __HAVE_ARCH_MEMSET +extern void * memset(void *,int,__kernel_size_t); #define __HAVE_ARCH_BCOPY #define __HAVE_ARCH_MEMCPY +extern void * memcpy(void *,const void *,__kernel_size_t); #define __HAVE_ARCH_MEMMOVE +extern void * memmove(void *,const void *,__kernel_size_t); #define __HAVE_ARCH_MEMCMP +extern int memcmp(const void *,const void *,__kernel_size_t); #define __HAVE_ARCH_MEMCHR +extern void * memchr(const void *,int,__kernel_size_t); extern int strcasecmp(const char *, const char *); extern int strncasecmp(const char *, const char *, int); --- arch/ppc/kernel/ppc_ksyms.c.bak Tue May 9 22:44:09 2000 +++ arch/ppc/kernel/ppc_ksyms.c Tue May 9 22:45:29 2000 @@ -271,6 +271,7 @@ #endif EXPORT_SYMBOL(down_read_failed); +#if defined(CONFIG_XMON) || defined(CONFIG_KGDB) extern void (*debugger)(struct pt_regs *regs); extern int (*debugger_bpt)(struct pt_regs *regs); extern int (*debugger_sstep)(struct pt_regs *regs); @@ -284,3 +285,4 @@ EXPORT_SYMBOL(debugger_iabr_match); EXPORT_SYMBOL(debugger_dabr_match); EXPORT_SYMBOL(debugger_fault_handler); +#endif