Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6a1c1e9 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull powerpc fixes from Michael Ellerman:
 - Fix build error on 32-bit with checkpoint restart from Aneesh Kumar
 - Fix dedotify for binutils >= 2.26 from Andreas Schwab
 - Don't trace hcalls on offline CPUs from Denis Kirjanov
 - eeh: Fix stale cached primary bus from Gavin Shan
 - eeh: Fix stale PE primary bus from Gavin Shan
 - mm: Fix Multi hit ERAT cause by recent THP update from Aneesh Kumar K.V
 - ioda: Set "read" permission when "write" is set from Alexey Kardashevskiy

* tag 'powerpc-4.5-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
  powerpc/ioda: Set "read" permission when "write" is set
  powerpc/mm: Fix Multi hit ERAT cause by recent THP update
  powerpc/powernv: Fix stale PE primary bus
  powerpc/eeh: Fix stale cached primary bus
  powerpc/pseries: Don't trace hcalls on offline CPUs
  powerpc: Fix dedotify for binutils >= 2.26
  powerpc/book3s_32: Fix build error with checkpoint restart
parents da6b7366 6ecad912
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -557,7 +557,7 @@ choice


config PPC_4K_PAGES
config PPC_4K_PAGES
	bool "4k page size"
	bool "4k page size"
	select HAVE_ARCH_SOFT_DIRTY if CHECKPOINT_RESTORE && PPC_BOOK3S
	select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64


config PPC_16K_PAGES
config PPC_16K_PAGES
	bool "16k page size"
	bool "16k page size"
@@ -566,7 +566,7 @@ config PPC_16K_PAGES
config PPC_64K_PAGES
config PPC_64K_PAGES
	bool "64k page size"
	bool "64k page size"
	depends on !PPC_FSL_BOOK3E && (44x || PPC_STD_MMU_64 || PPC_BOOK3E_64)
	depends on !PPC_FSL_BOOK3E && (44x || PPC_STD_MMU_64 || PPC_BOOK3E_64)
	select HAVE_ARCH_SOFT_DIRTY if CHECKPOINT_RESTORE && PPC_BOOK3S
	select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64


config PPC_256K_PAGES
config PPC_256K_PAGES
	bool "256k page size"
	bool "256k page size"
+4 −0
Original line number Original line Diff line number Diff line
@@ -281,6 +281,10 @@ extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp);
extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
			    pmd_t *pmdp);
			    pmd_t *pmdp);


#define __HAVE_ARCH_PMDP_HUGE_SPLIT_PREPARE
extern void pmdp_huge_split_prepare(struct vm_area_struct *vma,
				    unsigned long address, pmd_t *pmdp);

#define pmd_move_must_withdraw pmd_move_must_withdraw
#define pmd_move_must_withdraw pmd_move_must_withdraw
struct spinlock;
struct spinlock;
static inline int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,
static inline int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,
+1 −0
Original line number Original line Diff line number Diff line
@@ -81,6 +81,7 @@ struct pci_dn;
#define EEH_PE_KEEP		(1 << 8)	/* Keep PE on hotplug	*/
#define EEH_PE_KEEP		(1 << 8)	/* Keep PE on hotplug	*/
#define EEH_PE_CFG_RESTRICTED	(1 << 9)	/* Block config on error */
#define EEH_PE_CFG_RESTRICTED	(1 << 9)	/* Block config on error */
#define EEH_PE_REMOVED		(1 << 10)	/* Removed permanently	*/
#define EEH_PE_REMOVED		(1 << 10)	/* Removed permanently	*/
#define EEH_PE_PRI_BUS		(1 << 11)	/* Cached primary bus   */


struct eeh_pe {
struct eeh_pe {
	int type;			/* PE type: PHB/Bus/Device	*/
	int type;			/* PE type: PHB/Bus/Device	*/
+6 −2
Original line number Original line Diff line number Diff line
@@ -57,12 +57,14 @@ DEFINE_EVENT(ppc64_interrupt_class, timer_interrupt_exit,
extern void hcall_tracepoint_regfunc(void);
extern void hcall_tracepoint_regfunc(void);
extern void hcall_tracepoint_unregfunc(void);
extern void hcall_tracepoint_unregfunc(void);


TRACE_EVENT_FN(hcall_entry,
TRACE_EVENT_FN_COND(hcall_entry,


	TP_PROTO(unsigned long opcode, unsigned long *args),
	TP_PROTO(unsigned long opcode, unsigned long *args),


	TP_ARGS(opcode, args),
	TP_ARGS(opcode, args),


	TP_CONDITION(cpu_online(raw_smp_processor_id())),

	TP_STRUCT__entry(
	TP_STRUCT__entry(
		__field(unsigned long, opcode)
		__field(unsigned long, opcode)
	),
	),
@@ -76,13 +78,15 @@ TRACE_EVENT_FN(hcall_entry,
	hcall_tracepoint_regfunc, hcall_tracepoint_unregfunc
	hcall_tracepoint_regfunc, hcall_tracepoint_unregfunc
);
);


TRACE_EVENT_FN(hcall_exit,
TRACE_EVENT_FN_COND(hcall_exit,


	TP_PROTO(unsigned long opcode, unsigned long retval,
	TP_PROTO(unsigned long opcode, unsigned long retval,
		unsigned long *retbuf),
		unsigned long *retbuf),


	TP_ARGS(opcode, retval, retbuf),
	TP_ARGS(opcode, retval, retbuf),


	TP_CONDITION(cpu_online(raw_smp_processor_id())),

	TP_STRUCT__entry(
	TP_STRUCT__entry(
		__field(unsigned long, opcode)
		__field(unsigned long, opcode)
		__field(unsigned long, retval)
		__field(unsigned long, retval)
+3 −0
Original line number Original line Diff line number Diff line
@@ -564,6 +564,7 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus)
	 */
	 */
	eeh_pe_state_mark(pe, EEH_PE_KEEP);
	eeh_pe_state_mark(pe, EEH_PE_KEEP);
	if (bus) {
	if (bus) {
		eeh_pe_state_clear(pe, EEH_PE_PRI_BUS);
		pci_lock_rescan_remove();
		pci_lock_rescan_remove();
		pcibios_remove_pci_devices(bus);
		pcibios_remove_pci_devices(bus);
		pci_unlock_rescan_remove();
		pci_unlock_rescan_remove();
@@ -803,6 +804,7 @@ static void eeh_handle_normal_event(struct eeh_pe *pe)
	 * the their PCI config any more.
	 * the their PCI config any more.
	 */
	 */
	if (frozen_bus) {
	if (frozen_bus) {
		eeh_pe_state_clear(pe, EEH_PE_PRI_BUS);
		eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
		eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);


		pci_lock_rescan_remove();
		pci_lock_rescan_remove();
@@ -886,6 +888,7 @@ static void eeh_handle_special_event(void)
					continue;
					continue;


				/* Notify all devices to be down */
				/* Notify all devices to be down */
				eeh_pe_state_clear(pe, EEH_PE_PRI_BUS);
				bus = eeh_pe_bus_get(phb_pe);
				bus = eeh_pe_bus_get(phb_pe);
				eeh_pe_dev_traverse(pe,
				eeh_pe_dev_traverse(pe,
					eeh_report_failure, NULL);
					eeh_report_failure, NULL);
Loading