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

Configure Feed

Select the types of activity you want to include in your feed.

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

Here are a few more fixes for powerpc. Some are regressions, the rest
is simple/obvious/nasty enough that I deemed it good to go now.

Here's also step one of deprecating legacy iSeries support: we are
removing it from the main defconfig.

Nobody seems to be using it anymore and the code is nasty to maintain,
(involves horrible hacks in various low level areas of the kernel) so we
plan to actually rip it out at some point. For now let's just avoid
building it by default. Stephen will proceed to do the actual removal
later (probably 3.4 or 3.5).

* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
powerpc/perf: power_pmu_start restores incorrect values, breaking frequency events
powerpc/adb: Use set_current_state()
powerpc: Disable interrupts early in Program Check
powerpc: Remove legacy iSeries from ppc64_defconfig
powerpc/fsl/pci: Fix PCIe fixup regression
powerpc: Fix kernel log of oops/panic instruction dump

+41 -30
-5
arch/powerpc/configs/ppc64_defconfig
··· 24 24 CONFIG_SCANLOG=m 25 25 CONFIG_PPC_SMLPAR=y 26 26 CONFIG_DTL=y 27 - CONFIG_PPC_ISERIES=y 28 - CONFIG_VIODASD=y 29 - CONFIG_VIOCD=m 30 - CONFIG_VIOTAPE=m 31 27 CONFIG_PPC_MAPLE=y 32 28 CONFIG_PPC_PASEMI=y 33 29 CONFIG_PPC_PASEMI_IOMMU=y ··· 255 259 CONFIG_MLX4_EN=m 256 260 CONFIG_QLGE=m 257 261 CONFIG_BE2NET=m 258 - CONFIG_ISERIES_VETH=m 259 262 CONFIG_PPP=m 260 263 CONFIG_PPP_ASYNC=m 261 264 CONFIG_PPP_SYNC_TTY=m
+1 -1
arch/powerpc/kernel/exceptions-64s.S
··· 775 775 EXCEPTION_PROLOG_COMMON(0x700, PACA_EXGEN) 776 776 bl .save_nvgprs 777 777 addi r3,r1,STACK_FRAME_OVERHEAD 778 - ENABLE_INTS 778 + DISABLE_INTS 779 779 bl .program_check_exception 780 780 b .ret_from_except 781 781
+7 -1
arch/powerpc/kernel/perf_event.c
··· 865 865 { 866 866 unsigned long flags; 867 867 s64 left; 868 + unsigned long val; 868 869 869 870 if (!event->hw.idx || !event->hw.sample_period) 870 871 return; ··· 881 880 882 881 event->hw.state = 0; 883 882 left = local64_read(&event->hw.period_left); 884 - write_pmc(event->hw.idx, left); 883 + 884 + val = 0; 885 + if (left < 0x80000000L) 886 + val = 0x80000000L - left; 887 + 888 + write_pmc(event->hw.idx, val); 885 889 886 890 perf_event_update_userpage(event); 887 891 perf_pmu_enable(event->pmu);
+3 -3
arch/powerpc/kernel/process.c
··· 566 566 */ 567 567 if (!__kernel_text_address(pc) || 568 568 __get_user(instr, (unsigned int __user *)pc)) { 569 - printk("XXXXXXXX "); 569 + printk(KERN_CONT "XXXXXXXX "); 570 570 } else { 571 571 if (regs->nip == pc) 572 - printk("<%08x> ", instr); 572 + printk(KERN_CONT "<%08x> ", instr); 573 573 else 574 - printk("%08x ", instr); 574 + printk(KERN_CONT "%08x ", instr); 575 575 } 576 576 577 577 pc += sizeof(int);
+28 -18
arch/powerpc/sysdev/fsl_pci.c
··· 385 385 void fsl_pcibios_fixup_bus(struct pci_bus *bus) 386 386 { 387 387 struct pci_controller *hose = pci_bus_to_host(bus); 388 - int i; 388 + int i, is_pcie = 0, no_link; 389 389 390 - if ((bus->parent == hose->bus) && 391 - ((fsl_pcie_bus_fixup && 392 - early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) || 393 - (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK))) 394 - { 395 - for (i = 0; i < 4; ++i) { 390 + /* The root complex bridge comes up with bogus resources, 391 + * we copy the PHB ones in. 392 + * 393 + * With the current generic PCI code, the PHB bus no longer 394 + * has bus->resource[0..4] set, so things are a bit more 395 + * tricky. 396 + */ 397 + 398 + if (fsl_pcie_bus_fixup) 399 + is_pcie = early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP); 400 + no_link = !!(hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK); 401 + 402 + if (bus->parent == hose->bus && (is_pcie || no_link)) { 403 + for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; ++i) { 396 404 struct resource *res = bus->resource[i]; 397 - struct resource *par = bus->parent->resource[i]; 398 - if (res) { 399 - res->start = 0; 400 - res->end = 0; 401 - res->flags = 0; 402 - } 403 - if (res && par) { 404 - res->start = par->start; 405 - res->end = par->end; 406 - res->flags = par->flags; 407 - } 405 + struct resource *par; 406 + 407 + if (!res) 408 + continue; 409 + if (i == 0) 410 + par = &hose->io_resource; 411 + else if (i < 4) 412 + par = &hose->mem_resources[i-1]; 413 + else par = NULL; 414 + 415 + res->start = par ? par->start : 0; 416 + res->end = par ? par->end : 0; 417 + res->flags = par ? par->flags : 0; 408 418 } 409 419 } 410 420 }
+2 -2
drivers/macintosh/adb.c
··· 710 710 req = NULL; 711 711 spin_lock_irqsave(&state->lock, flags); 712 712 add_wait_queue(&state->wait_queue, &wait); 713 - current->state = TASK_INTERRUPTIBLE; 713 + set_current_state(TASK_INTERRUPTIBLE); 714 714 715 715 for (;;) { 716 716 req = state->completed; ··· 734 734 spin_lock_irqsave(&state->lock, flags); 735 735 } 736 736 737 - current->state = TASK_RUNNING; 737 + set_current_state(TASK_RUNNING); 738 738 remove_wait_queue(&state->wait_queue, &wait); 739 739 spin_unlock_irqrestore(&state->lock, flags); 740 740