Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

Pull powerpc fixes from Benjamin Herrenschmidt:
"Here's a handful of powerpc patches, a couple of regression fixes for
problems introduced in the main batch in this merge window, a couple
of defconfig updates, and some trivials.

The radeonfb one is something that was long standing in SLES which I
forgot to pickup earlier."

* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
powerpc/ftrace: Trace function graph entry before updating index
radeonfb: Add quirk for the graphics adapter in some JSxx
powerpc: Lack of firmware flash support is not an error
powerpc: Enable pseries hardware RNG and crypto modules
powerpc: Update g5_defconfig
powerpc/kvm/bookehv: Fix build regression
powerpc: Set stack limit properly in crit_transfer_to_handler

+129 -125
+30 -73
arch/powerpc/configs/g5_defconfig
··· 1 - CONFIG_PPC64=y 2 - CONFIG_ALTIVEC=y 3 - CONFIG_SMP=y 4 - CONFIG_NR_CPUS=4 5 1 CONFIG_EXPERIMENTAL=y 6 2 CONFIG_SYSVIPC=y 7 3 CONFIG_POSIX_MQUEUE=y 4 + CONFIG_NO_HZ=y 5 + CONFIG_HIGH_RES_TIMERS=y 8 6 CONFIG_IKCONFIG=y 9 7 CONFIG_IKCONFIG_PROC=y 10 8 CONFIG_BLK_DEV_INITRD=y ··· 13 15 CONFIG_MODULE_UNLOAD=y 14 16 CONFIG_MODVERSIONS=y 15 17 CONFIG_MODULE_SRCVERSION_ALL=y 16 - # CONFIG_PPC_PSERIES is not set 18 + CONFIG_PARTITION_ADVANCED=y 19 + CONFIG_MAC_PARTITION=y 20 + CONFIG_SMP=y 21 + CONFIG_NR_CPUS=4 22 + CONFIG_KEXEC=y 23 + # CONFIG_RELOCATABLE is not set 17 24 CONFIG_CPU_FREQ=y 18 25 CONFIG_CPU_FREQ_GOV_POWERSAVE=y 19 26 CONFIG_CPU_FREQ_GOV_USERSPACE=y 20 - CONFIG_CPU_FREQ_PMAC64=y 21 - CONFIG_NO_HZ=y 22 - CONFIG_HIGH_RES_TIMERS=y 23 - CONFIG_KEXEC=y 24 - CONFIG_IRQ_ALL_CPUS=y 25 - # CONFIG_MIGRATION is not set 26 27 CONFIG_PCI_MSI=y 27 28 CONFIG_NET=y 28 29 CONFIG_PACKET=y ··· 49 52 CONFIG_NF_CONNTRACK_IPV4=m 50 53 CONFIG_IP_NF_QUEUE=m 51 54 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 52 - CONFIG_PROC_DEVICETREE=y 53 55 CONFIG_BLK_DEV_LOOP=y 54 56 CONFIG_BLK_DEV_NBD=m 55 57 CONFIG_BLK_DEV_RAM=y ··· 56 60 CONFIG_CDROM_PKTCDVD=m 57 61 CONFIG_IDE=y 58 62 CONFIG_BLK_DEV_IDECD=y 59 - CONFIG_BLK_DEV_IDE_PMAC=y 60 - CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y 61 63 CONFIG_BLK_DEV_SD=y 62 64 CONFIG_CHR_DEV_ST=y 63 65 CONFIG_BLK_DEV_SR=y ··· 79 85 CONFIG_DM_SNAPSHOT=m 80 86 CONFIG_DM_MIRROR=m 81 87 CONFIG_DM_ZERO=m 82 - CONFIG_IEEE1394=y 83 - CONFIG_IEEE1394_OHCI1394=y 84 - CONFIG_IEEE1394_SBP2=m 85 - CONFIG_IEEE1394_ETH1394=m 86 - CONFIG_IEEE1394_RAWIO=y 87 - CONFIG_IEEE1394_VIDEO1394=m 88 - CONFIG_IEEE1394_DV1394=m 89 - CONFIG_ADB_PMU=y 90 - CONFIG_PMAC_SMU=y 88 + CONFIG_MACINTOSH_DRIVERS=y 91 89 CONFIG_MAC_EMUMOUSEBTN=y 92 - CONFIG_THERM_PM72=y 93 - CONFIG_WINDFARM=y 94 - CONFIG_WINDFARM_PM81=y 95 - CONFIG_WINDFARM_PM91=y 96 - CONFIG_WINDFARM_PM112=y 97 - CONFIG_WINDFARM_PM121=y 98 90 CONFIG_NETDEVICES=y 99 - CONFIG_DUMMY=m 100 91 CONFIG_BONDING=m 101 - CONFIG_TUN=m 102 - CONFIG_NET_ETHERNET=y 92 + CONFIG_DUMMY=m 103 93 CONFIG_MII=y 104 - CONFIG_SUNGEM=y 94 + CONFIG_TUN=m 105 95 CONFIG_ACENIC=m 106 96 CONFIG_ACENIC_OMIT_TIGON_I=y 107 - CONFIG_E1000=y 108 97 CONFIG_TIGON3=y 98 + CONFIG_E1000=y 99 + CONFIG_SUNGEM=y 100 + CONFIG_PPP=m 101 + CONFIG_PPP_BSDCOMP=m 102 + CONFIG_PPP_DEFLATE=m 103 + CONFIG_PPPOE=m 104 + CONFIG_PPP_ASYNC=m 105 + CONFIG_PPP_SYNC_TTY=m 109 106 CONFIG_USB_CATC=m 110 107 CONFIG_USB_KAWETH=m 111 108 CONFIG_USB_PEGASUS=m ··· 106 121 # CONFIG_USB_NET_NET1080 is not set 107 122 # CONFIG_USB_NET_CDC_SUBSET is not set 108 123 # CONFIG_USB_NET_ZAURUS is not set 109 - CONFIG_PPP=m 110 - CONFIG_PPP_ASYNC=m 111 - CONFIG_PPP_SYNC_TTY=m 112 - CONFIG_PPP_DEFLATE=m 113 - CONFIG_PPP_BSDCOMP=m 114 - CONFIG_PPPOE=m 115 124 # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 116 125 CONFIG_INPUT_JOYDEV=m 117 126 CONFIG_INPUT_EVDEV=y 118 - # CONFIG_KEYBOARD_ATKBD is not set 119 127 # CONFIG_MOUSE_PS2 is not set 120 - # CONFIG_SERIO_I8042 is not set 121 128 # CONFIG_SERIO_SERPORT is not set 129 + CONFIG_VT_HW_CONSOLE_BINDING=y 122 130 # CONFIG_HW_RANDOM is not set 123 131 CONFIG_GEN_RTC=y 124 132 CONFIG_RAW_DRIVER=y 125 133 CONFIG_I2C_CHARDEV=y 126 134 # CONFIG_HWMON is not set 127 - CONFIG_AGP=m 128 - CONFIG_AGP_UNINORTH=m 135 + CONFIG_AGP=y 136 + CONFIG_DRM=y 137 + CONFIG_DRM_NOUVEAU=y 129 138 CONFIG_VIDEO_OUTPUT_CONTROL=m 130 - CONFIG_FB=y 131 139 CONFIG_FIRMWARE_EDID=y 132 140 CONFIG_FB_TILEBLITTING=y 133 - CONFIG_FB_OF=y 134 - CONFIG_FB_NVIDIA=y 135 - CONFIG_FB_NVIDIA_I2C=y 136 141 CONFIG_FB_RADEON=y 137 - # CONFIG_VGA_CONSOLE is not set 138 - CONFIG_FRAMEBUFFER_CONSOLE=y 139 142 CONFIG_LOGO=y 140 143 CONFIG_SOUND=m 141 144 CONFIG_SND=m ··· 131 158 CONFIG_SND_MIXER_OSS=m 132 159 CONFIG_SND_PCM_OSS=m 133 160 CONFIG_SND_SEQUENCER_OSS=y 134 - CONFIG_SND_POWERMAC=m 135 - CONFIG_SND_AOA=m 136 - CONFIG_SND_AOA_FABRIC_LAYOUT=m 137 - CONFIG_SND_AOA_ONYX=m 138 - CONFIG_SND_AOA_TAS=m 139 - CONFIG_SND_AOA_TOONIE=m 140 161 CONFIG_SND_USB_AUDIO=m 141 - CONFIG_HID_PID=y 142 - CONFIG_USB_HIDDEV=y 143 162 CONFIG_HID_GYRATION=y 144 163 CONFIG_LOGITECH_FF=y 145 164 CONFIG_HID_PANTHERLORD=y ··· 139 174 CONFIG_HID_SAMSUNG=y 140 175 CONFIG_HID_SONY=y 141 176 CONFIG_HID_SUNPLUS=y 177 + CONFIG_HID_PID=y 178 + CONFIG_USB_HIDDEV=y 142 179 CONFIG_USB=y 143 - CONFIG_USB_DEVICEFS=y 144 180 CONFIG_USB_MON=y 145 181 CONFIG_USB_EHCI_HCD=y 146 - # CONFIG_USB_EHCI_HCD_PPC_OF is not set 147 182 CONFIG_USB_OHCI_HCD=y 148 - CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 149 183 CONFIG_USB_ACM=m 150 184 CONFIG_USB_PRINTER=y 151 185 CONFIG_USB_STORAGE=y ··· 208 244 CONFIG_REISERFS_FS_SECURITY=y 209 245 CONFIG_XFS_FS=m 210 246 CONFIG_XFS_POSIX_ACL=y 211 - CONFIG_INOTIFY=y 212 - CONFIG_AUTOFS_FS=m 213 247 CONFIG_ISO9660_FS=y 214 248 CONFIG_JOLIET=y 215 249 CONFIG_ZISOFS=y ··· 221 259 CONFIG_HFSPLUS_FS=m 222 260 CONFIG_CRAMFS=y 223 261 CONFIG_NFS_FS=y 224 - CONFIG_NFS_V3=y 225 262 CONFIG_NFS_V3_ACL=y 226 263 CONFIG_NFS_V4=y 227 264 CONFIG_NFSD=y 228 265 CONFIG_NFSD_V3_ACL=y 229 266 CONFIG_NFSD_V4=y 230 267 CONFIG_CIFS=m 231 - CONFIG_PARTITION_ADVANCED=y 232 268 CONFIG_NLS_CODEPAGE_437=y 233 269 CONFIG_NLS_CODEPAGE_1250=y 234 270 CONFIG_NLS_CODEPAGE_1251=y ··· 234 274 CONFIG_NLS_ISO8859_1=y 235 275 CONFIG_NLS_ISO8859_15=y 236 276 CONFIG_NLS_UTF8=y 237 - CONFIG_CRC_T10DIF=y 238 - CONFIG_LIBCRC32C=m 239 277 CONFIG_MAGIC_SYSRQ=y 278 + # CONFIG_UNUSED_SYMBOLS is not set 240 279 CONFIG_DEBUG_FS=y 241 280 CONFIG_DEBUG_KERNEL=y 242 281 CONFIG_DEBUG_MUTEXES=y 243 - # CONFIG_RCU_CPU_STALL_DETECTOR is not set 244 282 CONFIG_LATENCYTOP=y 245 - CONFIG_SYSCTL_SYSCALL_CHECK=y 246 - CONFIG_BOOTX_TEXT=y 283 + CONFIG_STRICT_DEVMEM=y 247 284 CONFIG_CRYPTO_NULL=m 248 285 CONFIG_CRYPTO_TEST=m 249 - CONFIG_CRYPTO_ECB=m 250 286 CONFIG_CRYPTO_PCBC=m 251 287 CONFIG_CRYPTO_HMAC=y 252 - CONFIG_CRYPTO_MD4=m 253 288 CONFIG_CRYPTO_MICHAEL_MIC=m 254 289 CONFIG_CRYPTO_SHA256=m 255 290 CONFIG_CRYPTO_SHA512=m 256 291 CONFIG_CRYPTO_WP512=m 257 292 CONFIG_CRYPTO_AES=m 258 293 CONFIG_CRYPTO_ANUBIS=m 259 - CONFIG_CRYPTO_ARC4=m 260 294 CONFIG_CRYPTO_BLOWFISH=m 261 295 CONFIG_CRYPTO_CAST5=m 262 296 CONFIG_CRYPTO_CAST6=m ··· 260 306 CONFIG_CRYPTO_TWOFISH=m 261 307 # CONFIG_CRYPTO_ANSI_CPRNG is not set 262 308 # CONFIG_CRYPTO_HW is not set 309 + # CONFIG_VIRTUALIZATION is not set 310 + CONFIG_CRC_T10DIF=y 311 + CONFIG_LIBCRC32C=m
+4 -2
arch/powerpc/configs/ppc64_defconfig
··· 279 279 CONFIG_HVC_BEAT=y 280 280 CONFIG_HVCS=m 281 281 CONFIG_IBM_BSR=m 282 - # CONFIG_HW_RANDOM is not set 282 + CONFIG_HW_RANDOM=m 283 + CONFIG_HW_RANDOM_PSERIES=m 283 284 CONFIG_RAW_DRIVER=y 284 285 CONFIG_I2C_CHARDEV=y 285 286 CONFIG_I2C_AMD8111=y ··· 486 485 CONFIG_CRYPTO_TWOFISH=m 487 486 CONFIG_CRYPTO_LZO=m 488 487 # CONFIG_CRYPTO_ANSI_CPRNG is not set 489 - # CONFIG_CRYPTO_HW is not set 488 + CONFIG_CRYPTO_HW=y 489 + CONFIG_CRYPTO_DEV_NX=m 490 490 CONFIG_VIRTUALIZATION=y 491 491 CONFIG_KVM_BOOK3S_64=m 492 492 CONFIG_KVM_BOOK3S_64_HV=y
+4 -2
arch/powerpc/configs/pseries_defconfig
··· 226 226 CONFIG_HVC_RTAS=y 227 227 CONFIG_HVCS=m 228 228 CONFIG_IBM_BSR=m 229 - # CONFIG_HW_RANDOM is not set 229 + CONFIG_HW_RANDOM=m 230 + CONFIG_HW_RANDOM_PSERIES=m 230 231 CONFIG_GEN_RTC=y 231 232 CONFIG_RAW_DRIVER=y 232 233 CONFIG_MAX_RAW_DEVS=1024 ··· 368 367 CONFIG_CRYPTO_TWOFISH=m 369 368 CONFIG_CRYPTO_LZO=m 370 369 # CONFIG_CRYPTO_ANSI_CPRNG is not set 371 - # CONFIG_CRYPTO_HW is not set 370 + CONFIG_CRYPTO_HW=y 371 + CONFIG_CRYPTO_DEV_NX=m 372 372 CONFIG_VIRTUALIZATION=y 373 373 CONFIG_KVM_BOOK3S_64=m 374 374 CONFIG_KVM_BOOK3S_64_HV=y
+10 -2
arch/powerpc/kernel/entry_32.S
··· 89 89 mfspr r0,SPRN_SRR1 90 90 stw r0,_SRR1(r11) 91 91 92 + /* set the stack limit to the current stack 93 + * and set the limit to protect the thread_info 94 + * struct 95 + */ 92 96 mfspr r8,SPRN_SPRG_THREAD 93 97 lwz r0,KSP_LIMIT(r8) 94 98 stw r0,SAVED_KSP_LIMIT(r11) 95 - CURRENT_THREAD_INFO(r0, r1) 99 + rlwimi r0,r1,0,0,(31-THREAD_SHIFT) 96 100 stw r0,KSP_LIMIT(r8) 97 101 /* fall through */ 98 102 #endif ··· 113 109 mfspr r0,SPRN_SRR1 114 110 stw r0,crit_srr1@l(0) 115 111 112 + /* set the stack limit to the current stack 113 + * and set the limit to protect the thread_info 114 + * struct 115 + */ 116 116 mfspr r8,SPRN_SPRG_THREAD 117 117 lwz r0,KSP_LIMIT(r8) 118 118 stw r0,saved_ksp_limit@l(0) 119 - CURRENT_THREAD_INFO(r0, r1) 119 + rlwimi r0,r1,0,0,(31-THREAD_SHIFT) 120 120 stw r0,KSP_LIMIT(r8) 121 121 /* fall through */ 122 122 #endif
+6 -7
arch/powerpc/kernel/ftrace.c
··· 630 630 return; 631 631 } 632 632 633 - if (ftrace_push_return_trace(old, self_addr, &trace.depth, 0) == -EBUSY) { 633 + trace.func = self_addr; 634 + trace.depth = current->curr_ret_stack + 1; 635 + 636 + /* Only trace if the calling function expects to */ 637 + if (!ftrace_graph_entry(&trace)) { 634 638 *parent = old; 635 639 return; 636 640 } 637 641 638 - trace.func = self_addr; 639 - 640 - /* Only trace if the calling function expects to */ 641 - if (!ftrace_graph_entry(&trace)) { 642 - current->curr_ret_stack--; 642 + if (ftrace_push_return_trace(old, self_addr, &trace.depth, 0) == -EBUSY) 643 643 *parent = old; 644 - } 645 644 } 646 645 #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ 647 646
+1 -1
arch/powerpc/kernel/rtas_flash.c
··· 709 709 710 710 if (rtas_token("ibm,update-flash-64-and-reboot") == 711 711 RTAS_UNKNOWN_SERVICE) { 712 - printk(KERN_ERR "rtas_flash: no firmware flash support\n"); 712 + pr_info("rtas_flash: no firmware flash support\n"); 713 713 return 1; 714 714 } 715 715
+39 -38
arch/powerpc/kvm/bookehv_interrupts.S
··· 50 50 #define HOST_R2 (3 * LONGBYTES) 51 51 #define HOST_CR (4 * LONGBYTES) 52 52 #define HOST_NV_GPRS (5 * LONGBYTES) 53 - #define HOST_NV_GPR(n) (HOST_NV_GPRS + ((n - 14) * LONGBYTES)) 54 - #define HOST_MIN_STACK_SIZE (HOST_NV_GPR(31) + LONGBYTES) 53 + #define __HOST_NV_GPR(n) (HOST_NV_GPRS + ((n - 14) * LONGBYTES)) 54 + #define HOST_NV_GPR(n) __HOST_NV_GPR(__REG_##n) 55 + #define HOST_MIN_STACK_SIZE (HOST_NV_GPR(R31) + LONGBYTES) 55 56 #define HOST_STACK_SIZE ((HOST_MIN_STACK_SIZE + 15) & ~15) /* Align. */ 56 57 #define HOST_STACK_LR (HOST_STACK_SIZE + LONGBYTES) /* In caller stack frame. */ 57 58 ··· 411 410 PPC_STL r31, VCPU_GPR(R31)(r4) 412 411 413 412 /* Load host non-volatile register state from host stack. */ 414 - PPC_LL r14, HOST_NV_GPR(r14)(r1) 415 - PPC_LL r15, HOST_NV_GPR(r15)(r1) 416 - PPC_LL r16, HOST_NV_GPR(r16)(r1) 417 - PPC_LL r17, HOST_NV_GPR(r17)(r1) 418 - PPC_LL r18, HOST_NV_GPR(r18)(r1) 419 - PPC_LL r19, HOST_NV_GPR(r19)(r1) 420 - PPC_LL r20, HOST_NV_GPR(r20)(r1) 421 - PPC_LL r21, HOST_NV_GPR(r21)(r1) 422 - PPC_LL r22, HOST_NV_GPR(r22)(r1) 423 - PPC_LL r23, HOST_NV_GPR(r23)(r1) 424 - PPC_LL r24, HOST_NV_GPR(r24)(r1) 425 - PPC_LL r25, HOST_NV_GPR(r25)(r1) 426 - PPC_LL r26, HOST_NV_GPR(r26)(r1) 427 - PPC_LL r27, HOST_NV_GPR(r27)(r1) 428 - PPC_LL r28, HOST_NV_GPR(r28)(r1) 429 - PPC_LL r29, HOST_NV_GPR(r29)(r1) 430 - PPC_LL r30, HOST_NV_GPR(r30)(r1) 431 - PPC_LL r31, HOST_NV_GPR(r31)(r1) 413 + PPC_LL r14, HOST_NV_GPR(R14)(r1) 414 + PPC_LL r15, HOST_NV_GPR(R15)(r1) 415 + PPC_LL r16, HOST_NV_GPR(R16)(r1) 416 + PPC_LL r17, HOST_NV_GPR(R17)(r1) 417 + PPC_LL r18, HOST_NV_GPR(R18)(r1) 418 + PPC_LL r19, HOST_NV_GPR(R19)(r1) 419 + PPC_LL r20, HOST_NV_GPR(R20)(r1) 420 + PPC_LL r21, HOST_NV_GPR(R21)(r1) 421 + PPC_LL r22, HOST_NV_GPR(R22)(r1) 422 + PPC_LL r23, HOST_NV_GPR(R23)(r1) 423 + PPC_LL r24, HOST_NV_GPR(R24)(r1) 424 + PPC_LL r25, HOST_NV_GPR(R25)(r1) 425 + PPC_LL r26, HOST_NV_GPR(R26)(r1) 426 + PPC_LL r27, HOST_NV_GPR(R27)(r1) 427 + PPC_LL r28, HOST_NV_GPR(R28)(r1) 428 + PPC_LL r29, HOST_NV_GPR(R29)(r1) 429 + PPC_LL r30, HOST_NV_GPR(R30)(r1) 430 + PPC_LL r31, HOST_NV_GPR(R31)(r1) 432 431 433 432 /* Return to kvm_vcpu_run(). */ 434 433 mtlr r5 ··· 454 453 stw r5, HOST_CR(r1) 455 454 456 455 /* Save host non-volatile register state to stack. */ 457 - PPC_STL r14, HOST_NV_GPR(r14)(r1) 458 - PPC_STL r15, HOST_NV_GPR(r15)(r1) 459 - PPC_STL r16, HOST_NV_GPR(r16)(r1) 460 - PPC_STL r17, HOST_NV_GPR(r17)(r1) 461 - PPC_STL r18, HOST_NV_GPR(r18)(r1) 462 - PPC_STL r19, HOST_NV_GPR(r19)(r1) 463 - PPC_STL r20, HOST_NV_GPR(r20)(r1) 464 - PPC_STL r21, HOST_NV_GPR(r21)(r1) 465 - PPC_STL r22, HOST_NV_GPR(r22)(r1) 466 - PPC_STL r23, HOST_NV_GPR(r23)(r1) 467 - PPC_STL r24, HOST_NV_GPR(r24)(r1) 468 - PPC_STL r25, HOST_NV_GPR(r25)(r1) 469 - PPC_STL r26, HOST_NV_GPR(r26)(r1) 470 - PPC_STL r27, HOST_NV_GPR(r27)(r1) 471 - PPC_STL r28, HOST_NV_GPR(r28)(r1) 472 - PPC_STL r29, HOST_NV_GPR(r29)(r1) 473 - PPC_STL r30, HOST_NV_GPR(r30)(r1) 474 - PPC_STL r31, HOST_NV_GPR(r31)(r1) 456 + PPC_STL r14, HOST_NV_GPR(R14)(r1) 457 + PPC_STL r15, HOST_NV_GPR(R15)(r1) 458 + PPC_STL r16, HOST_NV_GPR(R16)(r1) 459 + PPC_STL r17, HOST_NV_GPR(R17)(r1) 460 + PPC_STL r18, HOST_NV_GPR(R18)(r1) 461 + PPC_STL r19, HOST_NV_GPR(R19)(r1) 462 + PPC_STL r20, HOST_NV_GPR(R20)(r1) 463 + PPC_STL r21, HOST_NV_GPR(R21)(r1) 464 + PPC_STL r22, HOST_NV_GPR(R22)(r1) 465 + PPC_STL r23, HOST_NV_GPR(R23)(r1) 466 + PPC_STL r24, HOST_NV_GPR(R24)(r1) 467 + PPC_STL r25, HOST_NV_GPR(R25)(r1) 468 + PPC_STL r26, HOST_NV_GPR(R26)(r1) 469 + PPC_STL r27, HOST_NV_GPR(R27)(r1) 470 + PPC_STL r28, HOST_NV_GPR(R28)(r1) 471 + PPC_STL r29, HOST_NV_GPR(R29)(r1) 472 + PPC_STL r30, HOST_NV_GPR(R30)(r1) 473 + PPC_STL r31, HOST_NV_GPR(R31)(r1) 475 474 476 475 /* Load guest non-volatiles. */ 477 476 PPC_LL r14, VCPU_GPR(R14)(r4)
+35
drivers/video/aty/radeon_monitor.c
··· 730 730 var->vmode = mode->vmode; 731 731 } 732 732 733 + #ifdef CONFIG_PPC_PSERIES 734 + static int is_powerblade(const char *model) 735 + { 736 + struct device_node *root; 737 + const char* cp; 738 + int len, l, rc = 0; 739 + 740 + root = of_find_node_by_path("/"); 741 + if (root && model) { 742 + l = strlen(model); 743 + cp = of_get_property(root, "model", &len); 744 + if (cp) 745 + rc = memcmp(model, cp, min(len, l)) == 0; 746 + of_node_put(root); 747 + } 748 + return rc; 749 + } 750 + #endif 751 + 733 752 /* 734 753 * Build the modedb for head 1 (head 2 will come later), check panel infos 735 754 * from either BIOS or EDID, and pick up the default mode ··· 883 864 info->monspecs.modedb_len, NULL, 8) != 0) 884 865 has_default_mode = 1; 885 866 } 867 + 868 + #ifdef CONFIG_PPC_PSERIES 869 + if (!has_default_mode && ( 870 + is_powerblade("IBM,8842") || /* JS20 */ 871 + is_powerblade("IBM,8844") || /* JS21 */ 872 + is_powerblade("IBM,7998") || /* JS12/JS21/JS22 */ 873 + is_powerblade("IBM,0792") || /* QS21 */ 874 + is_powerblade("IBM,0793") /* QS22 */ 875 + )) { 876 + printk("Falling back to 800x600 on JSxx hardware\n"); 877 + if (fb_find_mode(&info->var, info, "800x600@60", 878 + info->monspecs.modedb, 879 + info->monspecs.modedb_len, NULL, 8) != 0) 880 + has_default_mode = 1; 881 + } 882 + #endif 886 883 887 884 /* 888 885 * Still no mode, let's pick up a default from the db