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

Commit 91c6c8dc authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull ARM fixes from Russell King:
 "A range of ARM fixes.  Biggest change is the stage-2 attributes used
  for for hyp mode which were wrong.  I've killed some bits in a couple
  of DT files which turned out not to be required, and a few other
  fixes.

  One fix touches code outside of arch/arm, which is related to sorting
  out the DMA masks correctly.  There is a long standing issue with the
  conversion from PFNs to addresses where people assume that shifting an
  unsigned long left by PAGE_SHIFT results in a correct address.  This
  is not the case with C: the integer promotion happens at assignment
  after evaluation.  This fixes the recently introduced dma_max_pfn()
  function, but there's a number of other places where we try this
  directly on an unsigned long in the mm code"

* 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
  ARM: 7957/1: add DSB after icache flush in __flush_icache_all()
  Fix uses of dma_max_pfn() when converting to a limiting address
  ARM: 7955/1: spinlock: ensure we have a compiler barrier before sev
  ARM: 7953/1: mm: ensure TLB invalidation is complete before enabling MMU
  ARM: 7952/1: mm: Fix the memblock allocation for LPAE machines
  ARM: 7950/1: mm: Fix stage-2 device memory attributes
  ARM: dts: fix spdif pinmux configuration
parents 341bbdc5 39544ac9
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -52,12 +52,6 @@
		};
	};

	codec: spdif-transmitter {
		compatible = "linux,spdif-dit";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_hummingboard_spdif>;
	};

	sound-spdif {
		compatible = "fsl,imx-audio-spdif";
		model = "imx-spdif";
@@ -111,7 +105,7 @@
		};

		pinctrl_hummingboard_spdif: hummingboard-spdif {
			fsl,pins = <MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x1b0b0>;
			fsl,pins = <MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x13091>;
		};

		pinctrl_hummingboard_usbh1_vbus: hummingboard-usbh1-vbus {
@@ -142,6 +136,8 @@
};

&spdif {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hummingboard_spdif>;
	status = "okay";
};

+3 −7
Original line number Diff line number Diff line
@@ -46,12 +46,6 @@
		};
	};

	codec: spdif-transmitter {
		compatible = "linux,spdif-dit";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_cubox_i_spdif>;
	};

	sound-spdif {
		compatible = "fsl,imx-audio-spdif";
		model = "imx-spdif";
@@ -89,7 +83,7 @@
		};

		pinctrl_cubox_i_spdif: cubox-i-spdif {
			fsl,pins = <MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x1b0b0>;
			fsl,pins = <MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x13091>;
		};

		pinctrl_cubox_i_usbh1_vbus: cubox-i-usbh1-vbus {
@@ -121,6 +115,8 @@
};

&spdif {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_cubox_i_spdif>;
	status = "okay";
};

+1 −0
Original line number Diff line number Diff line
@@ -212,6 +212,7 @@ extern void copy_to_user_page(struct vm_area_struct *, struct page *,
static inline void __flush_icache_all(void)
{
	__flush_icache_preferred();
	dsb();
}

/*
+9 −6
Original line number Diff line number Diff line
@@ -120,9 +120,12 @@
/*
 * 2nd stage PTE definitions for LPAE.
 */
#define L_PTE_S2_MT_UNCACHED	 (_AT(pteval_t, 0x5) << 2) /* MemAttr[3:0] */
#define L_PTE_S2_MT_WRITETHROUGH (_AT(pteval_t, 0xa) << 2) /* MemAttr[3:0] */
#define L_PTE_S2_MT_WRITEBACK	 (_AT(pteval_t, 0xf) << 2) /* MemAttr[3:0] */
#define L_PTE_S2_MT_UNCACHED		(_AT(pteval_t, 0x0) << 2) /* strongly ordered */
#define L_PTE_S2_MT_WRITETHROUGH	(_AT(pteval_t, 0xa) << 2) /* normal inner write-through */
#define L_PTE_S2_MT_WRITEBACK		(_AT(pteval_t, 0xf) << 2) /* normal inner write-back */
#define L_PTE_S2_MT_DEV_SHARED		(_AT(pteval_t, 0x1) << 2) /* device */
#define L_PTE_S2_MT_MASK		(_AT(pteval_t, 0xf) << 2)

#define L_PTE_S2_RDONLY			(_AT(pteval_t, 1) << 6)   /* HAP[1]   */
#define L_PTE_S2_RDWR			(_AT(pteval_t, 3) << 6)   /* HAP[2:1] */

+3 −12
Original line number Diff line number Diff line
@@ -37,18 +37,9 @@

static inline void dsb_sev(void)
{
#if __LINUX_ARM_ARCH__ >= 7
	__asm__ __volatile__ (
		"dsb ishst\n"
		SEV
	);
#else
	__asm__ __volatile__ (
		"mcr p15, 0, %0, c7, c10, 4\n"
		SEV
		: : "r" (0)
	);
#endif

	dsb(ishst);
	__asm__(SEV);
}

/*
Loading