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 tag 'powerpc-4.11-6' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux

Pull more powerpc fixes from Michael Ellerman:
"These are all pretty minor. The fix for idle wakeup would be a bad bug
but has not been observed in practice.

The update to the gcc-plugins docs was Cc'ed to Kees and Jon, Kees
OK'ed it going via powerpc and I didn't hear from Jon.

- cxl: Route eeh events to all slices for pci_channel_io_perm_failure state

- powerpc/64s: Fix idle wakeup potential to clobber registers

- Revert "powerpc/64: Disable use of radix under a hypervisor"

- gcc-plugins: update architecture list in documentation

Thanks to: Andrew Donnellan, Nicholas Piggin, Paul Mackerras, Vaibhav
Jain"

* tag 'powerpc-4.11-6' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
gcc-plugins: update architecture list in documentation
Revert "powerpc/64: Disable use of radix under a hypervisor"
powerpc/64s: Fix idle wakeup potential to clobber registers
cxl: Route eeh events to all slices for pci_channel_io_perm_failure state

+26 -14
+2 -2
Documentation/gcc-plugins.txt
··· 18 18 gcc-4.7 can be compiled by a C or a C++ compiler, 19 19 and versions 4.8+ can only be compiled by a C++ compiler. 20 20 21 - Currently the GCC plugin infrastructure supports only the x86, arm and arm64 22 - architectures. 21 + Currently the GCC plugin infrastructure supports only the x86, arm, arm64 and 22 + powerpc architectures. 23 23 24 24 This infrastructure was ported from grsecurity [6] and PaX [7]. 25 25
+17 -3
arch/powerpc/kernel/idle_book3s.S
··· 449 449 _GLOBAL(pnv_wakeup_tb_loss) 450 450 ld r1,PACAR1(r13) 451 451 /* 452 - * Before entering any idle state, the NVGPRs are saved in the stack 453 - * and they are restored before switching to the process context. Hence 454 - * until they are restored, they are free to be used. 452 + * Before entering any idle state, the NVGPRs are saved in the stack. 453 + * If there was a state loss, or PACA_NAPSTATELOST was set, then the 454 + * NVGPRs are restored. If we are here, it is likely that state is lost, 455 + * but not guaranteed -- neither ISA207 nor ISA300 tests to reach 456 + * here are the same as the test to restore NVGPRS: 457 + * PACA_THREAD_IDLE_STATE test for ISA207, PSSCR test for ISA300, 458 + * and SRR1 test for restoring NVGPRs. 459 + * 460 + * We are about to clobber NVGPRs now, so set NAPSTATELOST to 461 + * guarantee they will always be restored. This might be tightened 462 + * with careful reading of specs (particularly for ISA300) but this 463 + * is already a slow wakeup path and it's simpler to be safe. 464 + */ 465 + li r0,1 466 + stb r0,PACA_NAPSTATELOST(r13) 467 + 468 + /* 455 469 * 456 470 * Save SRR1 and LR in NVGPRs as they might be clobbered in 457 471 * opal_call() (called in CHECK_HMI_INTERRUPT). SRR1 is required
+1 -2
arch/powerpc/mm/init_64.c
··· 397 397 void __init mmu_early_init_devtree(void) 398 398 { 399 399 /* Disable radix mode based on kernel command line. */ 400 - /* We don't yet have the machinery to do radix as a guest. */ 401 - if (disable_radix || !(mfmsr() & MSR_HV)) 400 + if (disable_radix) 402 401 cur_cpu_spec->mmu_features &= ~MMU_FTR_TYPE_RADIX; 403 402 404 403 /*
+6 -7
drivers/misc/cxl/pci.c
··· 1792 1792 1793 1793 /* If we're permanently dead, give up. */ 1794 1794 if (state == pci_channel_io_perm_failure) { 1795 - /* Tell the AFU drivers; but we don't care what they 1796 - * say, we're going away. 1797 - */ 1798 1795 for (i = 0; i < adapter->slices; i++) { 1799 1796 afu = adapter->afu[i]; 1800 - /* Only participate in EEH if we are on a virtual PHB */ 1801 - if (afu->phb == NULL) 1802 - return PCI_ERS_RESULT_NONE; 1803 - cxl_vphb_error_detected(afu, state); 1797 + /* 1798 + * Tell the AFU drivers; but we don't care what they 1799 + * say, we're going away. 1800 + */ 1801 + if (afu->phb != NULL) 1802 + cxl_vphb_error_detected(afu, state); 1804 1803 } 1805 1804 return PCI_ERS_RESULT_DISCONNECT; 1806 1805 }