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

Commit 2527083c authored by Michael Ellerman's avatar Michael Ellerman
Browse files

Merge tag 'powerpc-4.5-4' into next

Pull in our current fixes from 4.5, in particular the "Fix Multi hit
ERAT" bug is causing folks some grief when testing next.
parents a4c3f909 9ab3ac23
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -557,7 +557,7 @@ choice

config PPC_4K_PAGES
	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
	bool "16k page size"
@@ -566,7 +566,7 @@ config PPC_16K_PAGES
config PPC_64K_PAGES
	bool "64k page size"
	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
	bool "256k page size"
+4 −0
Original line number 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,
			    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
struct spinlock;
static inline int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,
+1 −0
Original line number 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_CFG_RESTRICTED	(1 << 9)	/* Block config on error */
#define EEH_PE_REMOVED		(1 << 10)	/* Removed permanently	*/
#define EEH_PE_PRI_BUS		(1 << 11)	/* Cached primary bus   */

struct eeh_pe {
	int type;			/* PE type: PHB/Bus/Device	*/
+6 −2
Original line number 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_unregfunc(void);

TRACE_EVENT_FN(hcall_entry,
TRACE_EVENT_FN_COND(hcall_entry,

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

	TP_ARGS(opcode, args),

	TP_CONDITION(cpu_online(raw_smp_processor_id())),

	TP_STRUCT__entry(
		__field(unsigned long, opcode)
	),
@@ -76,13 +78,15 @@ TRACE_EVENT_FN(hcall_entry,
	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,
		unsigned long *retbuf),

	TP_ARGS(opcode, retval, retbuf),

	TP_CONDITION(cpu_online(raw_smp_processor_id())),

	TP_STRUCT__entry(
		__field(unsigned long, opcode)
		__field(unsigned long, retval)
+4 −2
Original line number Diff line number Diff line
@@ -418,8 +418,7 @@ static void *eeh_rmv_device(void *data, void *userdata)
		eeh_pcid_put(dev);
		if (driver->err_handler &&
		    driver->err_handler->error_detected &&
		    driver->err_handler->slot_reset &&
		    driver->err_handler->resume)
		    driver->err_handler->slot_reset)
			return NULL;
	}

@@ -564,6 +563,7 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus)
	 */
	eeh_pe_state_mark(pe, EEH_PE_KEEP);
	if (bus) {
		eeh_pe_state_clear(pe, EEH_PE_PRI_BUS);
		pci_lock_rescan_remove();
		pcibios_remove_pci_devices(bus);
		pci_unlock_rescan_remove();
@@ -803,6 +803,7 @@ static void eeh_handle_normal_event(struct eeh_pe *pe)
	 * the their PCI config any more.
	 */
	if (frozen_bus) {
		eeh_pe_state_clear(pe, EEH_PE_PRI_BUS);
		eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);

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

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