Linux 4.7.10
Greg KH
maintainer-------------------
Note, this is the LAST 4.7.y stable kernel to be released, it is now end-of-life, please use 4.8.y instead at this point in time.
-------------------
I'm announcing the release of the 4.7.10 kernel.
All users of the 4.7 kernel series must upgrade.
The updated 4.7.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.7.y
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
MAINTAINERS | 7 - Makefile | 2 arch/arc/include/asm/irqflags-arcv2.h | 2 arch/arc/kernel/intc-arcv2.c | 2 block/cfq-iosched.c | 13 +- crypto/async_tx/async_pq.c | 8 - crypto/ghash-generic.c | 13 -- drivers/base/dma-mapping.c | 2 drivers/clk/mvebu/cp110-system-controller.c | 31 ++++- drivers/crypto/vmx/ghash.c | 31 +++-- drivers/infiniband/hw/hfi1/rc.c | 5 drivers/misc/mei/amthif.c | 12 +- drivers/misc/mei/bus.c | 2 drivers/net/ethernet/intel/i40e/i40e_main.c | 6 + drivers/net/wireless/ath/carl9170/debug.c | 6 - drivers/net/wireless/broadcom/b43/debugfs.c | 6 - drivers/net/wireless/broadcom/b43legacy/debugfs.c | 6 - drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 9 + drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c | 9 + drivers/scsi/arcmsr/arcmsr_hba.c | 12 +- drivers/scsi/ibmvscsi/ibmvfc.c | 1 drivers/tty/serial/8250/8250_dw.c | 2 drivers/tty/serial/8250/8250_port.c | 11 -- drivers/tty/serial/imx.c | 3 fs/attr.c | 15 ++ fs/btrfs/compression.c | 4 fs/btrfs/ctree.h | 3 fs/btrfs/disk-io.c | 9 + fs/btrfs/extent_io.c | 64 ++++++++---- fs/btrfs/extent_io.h | 22 ++++ fs/btrfs/free-space-tree.c | 19 +-- fs/cachefiles/interface.c | 8 + fs/cachefiles/internal.h | 3 fs/cachefiles/namei.c | 8 - fs/debugfs/file.c | 13 -- fs/dlm/lowcomms.c | 8 - fs/ext4/extents.c | 3 fs/ext4/inode.c | 24 +++- fs/ext4/move_extent.c | 7 + fs/ext4/namei.c | 14 +- fs/fuse/dir.c | 59 ++++++++++- fs/reiserfs/super.c | 12 ++ fs/utimes.c | 16 --- include/crypto/ghash.h | 23 ++++ include/linux/debugfs.h | 17 +++ include/linux/fs.h | 1 include/uapi/linux/btrfs.h | 12 ++ mm/filemap.c | 4 sound/soc/intel/atom/sst/sst_pvt.c | 14 +- 49 files changed, 411 insertions(+), 172 deletions(-)
Alexander Usyskin (1):
mei: amthif: fix deadlock in initialization during a reset
Andy Shevchenko (1):
serial: 8250_port: fix runtime PM use in __do_stop_tx_rs485()
Borislav Petkov (1):
scsi: arcmsr: Simplify user_len checking
Brian King (1):
scsi: ibmvfc: Fix I/O hang when port is not mapped
Christian Lamparter (4):
debugfs: introduce a public file_operations accessor
b43: fix debugfs crash
b43legacy: fix debugfs crash
carl9170: fix debugfs crashes
Daeho Jeong (1):
ext4: reinforce check of i_dtime when clearing high fields of uid and gid
Dan Carpenter (1):
scsi: arcmsr: Buffer overflow in arcmsr_iop_message_xfer()
Dave Chinner (1):
xfs: change mailing list address
David Howells (1):
cachefiles: Fix attempt to read i_blocks after deleting file [ver #2]
Eric Whitney (1):
ext4: enforce online defrag restriction for encrypted files
Fabian Frederick (1):
ext4: fix memory leak in ext4_insert_range()
Glauber Costa (1):
cfq: fix starvation of asynchronous writes
Greg Kroah-Hartman (1):
Linux 4.7.10
Guilherme G Piccoli (1):
i40e: avoid NULL pointer dereference and recursive errors on early PCI error
Jan Kara (1):
ext4: unmap metadata when zeroing blocks
Junjie Mao (1):
btrfs: assign error values to the correct bio structs
Justin Maggard (1):
async_pq_val: fix DMA memory leak
Kefeng Wang (1):
serial: 8250_dw: Check the data->pclk when get apb_pclk
Marcelo Cerri (2):
crypto: ghash-generic - move common definitions to a new header file
crypto: vmx - Fix memory corruption caused by p8_ghash
Marcelo Ricardo Leitner (1):
dlm: free workqueues after the connections
Marcin Wojtas (2):
clk: mvebu: fix setting unwanted flags in CP110 gate clock
clk: mvebu: dynamically allocate resources in Armada CP110 system controller
Mike Galbraith (1):
reiserfs: Unlock superblock before calling reiserfs_quota_on_mount()
Mike Marciniszyn (1):
IB/hfi1: Fix defered ack race with qp destroy
Miklos Szeredi (4):
fuse: listxattr: verify xattr list
fuse: invalidate dir dentry after chmod
fuse: fix killing s[ug]id in setattr
vfs: move permission checking into notify_change() for utimes(NULL)
Nicolas Iooss (2):
brcmfmac: fix pmksa->bssid usage
ASoC: Intel: Atom: add a missing star in a memcpy call
Omar Sandoval (2):
Btrfs: fix free space tree bitmaps on big-endian systems
Btrfs: catch invalid free space trees
Peng Fan (1):
drivers: base: dma-mapping: page align the size when unmap_kernel_range
Rafał Miłecki (2):
brcmfmac: fix memory leak in brcmf_fill_bss_param
brcmfmac: use correct skb freeing helper when deleting flowring
Ross Zwisler (1):
ext4: allow DAX writeback for hole punch
Sascha Hauer (1):
serial: imx: Fix DCD reading
Vineet Gupta (1):
ARCv2: fix local_save_flags
Wei Fang (1):
vfs,mm: fix a dead loop in truncate_inode_pages_range()
Yuriy Kolerov (1):
ARCv2: intc: Use kflag if STATUS32.IE must be reset
gmail (1):
ext4: release bh in make_indexed_dir
wangguang (1):
ext4: bugfix for mmaped pages in mpage_release_unused_pages()
Greg KH
maintainerDocumentation/cpu-freq/pcc-cpufreq.txt +2 -2
@@ -159,8 +159,8 @@ to be strictly associated with a P-state. 2.2 cpuinfo_transition_latency: ------------------------------- -The cpuinfo_transition_latency field is CPUFREQ_ETERNAL. The PCC specification -does not include a field to expose this value currently. +The cpuinfo_transition_latency field is 0. The PCC specification does +not include a field to expose this value currently. 2.3 cpuinfo_cur_freq: ---------------------
Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt +7 -0
@@ -16,6 +16,11 @@ Required properties: - vref-supply: The regulator supply ADC reference voltage. - #io-channel-cells: Should be 1, see ../iio-bindings.txt +Optional properties: +- resets: Must contain an entry for each entry in reset-names if need support + this option. See ../reset/reset.txt for details. +- reset-names: Must include the name "saradc-apb". + Example: saradc: saradc@2006c000 { compatible = "rockchip,saradc";
@@ -23,6 +28,8 @@ Example: interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>; clock-names = "saradc", "apb_pclk"; + resets = <&cru SRST_SARADC>; + reset-names = "saradc-apb"; #io-channel-cells = <1>; vref-supply = <&vcc18>; };
Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.txt +3 -3
@@ -113,9 +113,9 @@ pm8916: l14, l15, l16, l17, l18 pm8941: - s1, s2, s3, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, - l15, l16, l17, l18, l19, l20, l21, l22, l23, l24, lvs1, lvs2, lvs3, - mvs1, mvs2 + s1, s2, s3, s4, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, + l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24, lvs1, lvs2, lvs3, + 5vs1, 5vs2 pm8994: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, l1, l2, l3, l4, l5,
Documentation/mic/mpssd/mpssd.c +2 -2
@@ -1538,9 +1538,9 @@ set_cmdline(struct mic_info *mic) len =snprintf (buffer,PATH_MAX ,"clocksource=tsc highres=off nohz=off " ); - len +=snprintf (buffer + len,PATH_MAX , + len +=snprintf (buffer + len,PATH_MAX - len,"cpufreq_on;corec6_off;pc3_off;pc6_off " ); - len +=snprintf (buffer + len,PATH_MAX , + len +=snprintf (buffer + len,PATH_MAX - len,"ifcfg=static;address,172.31.%d.1;netmask,255.255.255.0" , mic->id +1 );
Documentation/module-signing.txt +6 -0
@@ -271,3 +271,9 @@ Since the private key is used to sign modules, viruses and malware could use the private key to sign modules and compromise the operating system. The private key must be either destroyed or moved to a secure location and not kept in the root node of the kernel source tree. + +If you use the same private key to sign modules for multiple kernel +configurations, you must ensure that the module version information is +sufficient to prevent loading a module into a different kernel. Either +set CONFIG_MODVERSIONS=y or ensure that each configuration has a different +kernel release string by changing EXTRAVERSION or CONFIG_LOCALVERSION.
Documentation/pinctrl.txt +1 -1
@@ -831,7 +831,7 @@ separate memory range only intended for GPIO driving, and the register range dealing with pin config and pin multiplexing get placed into a different memory range and a separate section of the data sheet. -A flag "strict" in struct pinctrl_desc is available to check and deny +A flag "strict" in struct pinmux_ops is available to check and deny simultaneous access to the same pin from GPIO and pin multiplexing consumers on hardware of this type. The pinctrl driver should set this flag accordingly.
Documentation/virtual/kvm/devices/vcpu.txt +3 -1
@@ -30,4 +30,6 @@ Returns: -ENODEV: PMUv3 not supported attribute -EBUSY: PMUv3 already initialized -Request the initialization of the PMUv3. +Request the initialization of the PMUv3. This must be done after creating the +in-kernel irqchip. Creating a PMU with a userspace irqchip is currently not +supported.
MAINTAINERS +3 -4
@@ -12620,11 +12620,10 @@ F: arch/x86/xen/*swiotlb* F: drivers/xen/*swiotlb* XFS FILESYSTEM -P: Silicon Graphics Inc M: Dave Chinner <[email protected]> -M: [email protected] -L: [email protected] -W: http://oss.sgi.com/projects/xfs +M: [email protected] +L: [email protected] +W: http://xfs.org/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs.git S: Supported F: Documentation/filesystems/xfs.txt
Makefile +5 -4
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 7 -SUBLEVEL = 0 +SUBLEVEL = 10 EXTRAVERSION = NAME = Psychotic Stoned Sheep
@@ -370,7 +370,7 @@ LDFLAGS_MODULE = CFLAGS_KERNEL = AFLAGS_KERNEL = LDFLAGS_vmlinux = -CFLAGS_GCOV = -fprofile-arcs -ftest-coverage -fno-tree-loop-im -Wno-maybe-uninitialized +CFLAGS_GCOV = -fprofile-arcs -ftest-coverage -fno-tree-loop-im CFLAGS_KCOV = -fsanitize-coverage=trace-pc
@@ -619,12 +619,13 @@ ARCH_CFLAGS := include arch/$(SRCARCH)/Makefile KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks,) +KBUILD_CFLAGS += $(call cc-disable-warning,maybe-uninitialized,) ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE -KBUILD_CFLAGS += -Os $(call cc-disable-warning,maybe-uninitialized,) +KBUILD_CFLAGS += -Os else ifdef CONFIG_PROFILE_ALL_BRANCHES -KBUILD_CFLAGS += -O2 $(call cc-disable-warning,maybe-uninitialized,) +KBUILD_CFLAGS += -O2 else KBUILD_CFLAGS += -O2 endif
arch/alpha/include/asm/uaccess.h +8 -11
@@ -371,14 +371,6 @@ __copy_tofrom_user_nocheck(void *to, const void *from, long len)return __cu_len; } -extern inline long -__copy_tofrom_user (void *to,const void *from,long len,const void __user *validate) -{ -if (__access_ok ((unsigned long )validate, len,get_fs ())) - len =__copy_tofrom_user_nocheck (to, from, len); -return len; -} -#define __copy_to_user (to, from, n) \ ({ \ __chk_user_ptr(to); \
@@ -393,17 +385,22 @@ __copy_tofrom_user(void *to, const void *from, long len, const void __user *vali#define __copy_to_user_inatomic __copy_to_user#define __copy_from_user_inatomic __copy_from_user -extern inline long copy_to_user (void __user *to,const void *from,long n) { -return __copy_tofrom_user ((__force void *)to, from, n, to); +if (likely (__access_ok ((unsigned long )to, n,get_fs ()))) + n =__copy_tofrom_user_nocheck ((__force void *)to, from, n); +return n; }extern inline long copy_from_user (void *to,const void __user *from,long n) { -return __copy_tofrom_user (to, (__force void *)from, n, from); +if (likely (__access_ok ((unsigned long )from, n,get_fs ()))) + n =__copy_tofrom_user_nocheck (to, (__force void *)from, n); +else +memset (to,0 , n); +return n; }extern void __do_clear_user (void );
arch/arc/Makefile +1 -3
@@ -74,9 +74,7 @@ endif ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE # Generic build system uses -O2, we want -O3 # Note: No need to add to cflags-y as that happens anyways -# -# Disable the false maybe-uninitialized warings gcc spits out at -O3 -ARCH_CFLAGS += -O3 $(call cc-disable-warning,maybe-uninitialized,) +ARCH_CFLAGS += -O3 endif # small data is default for elf32 tool-chain. If not usable, disable it
arch/arc/include/asm/entry.h +2 -2
@@ -142,7 +142,7 @@#ifdef CONFIG_ARC_CURR_IN_REG ; Retrieve orig r25 and save it with rest of callee_regs - ld.as r12, [r12, PT_user_r25] + ld r12, [r12, PT_user_r25] PUSH r12 #else PUSH r25
@@ -198,7 +198,7 @@ ; SP is back to start of pt_regs#ifdef CONFIG_ARC_CURR_IN_REG - st.as r12, [sp, PT_user_r25] + st r12, [sp, PT_user_r25] #endif .endm
arch/arc/include/asm/irqflags-arcv2.h +1 -1
@@ -112,7 +112,7 @@ static inline long arch_local_save_flags(void)*/ temp = (1 <<5 ) | ((!!(temp &STATUS_IE_MASK )) <<CLRI_STATUS_IE_BIT ) | - (temp &CLRI_STATUS_E_MASK ); + ((temp >>1 ) &CLRI_STATUS_E_MASK );return temp; }
arch/arc/include/asm/irqflags-compact.h +1 -1
@@ -188,10 +188,10 @@ static inline int arch_irqs_disabled(void) .endm .macro IRQ_ENABLE scratch +TRACE_ASM_IRQ_ENABLE lr \scratch, [status32] or \scratch, \scratch, (STATUS_E1_MASK | STATUS_E2_MASK) flag \scratch - TRACE_ASM_IRQ_ENABLE .endm #endif /* __ASSEMBLY__ */
arch/arc/include/asm/pgtable.h +2 -2
@@ -110,7 +110,7 @@#define ___DEF (_PAGE_PRESENT | _PAGE_CACHEABLE)/* Set of bits not changed in pte_modify */ -#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY) +#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_SPECIAL)/* More Abbrevaited helpers */ #define PAGE_U_NONE __pgprot(___DEF)
@@ -280,7 +280,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep)#define pte_page (pte) pfn_to_page(pte_pfn(pte))#define mk_pte (page, prot) pfn_pte(page_to_pfn(page), prot) -#define pfn_pte (pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot))) +#define pfn_pte (pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))/* Don't use virt_to_pfn for macros below: could cause truncations for PAE40*/ #define pte_pfn (pte) (pte_val(pte) >> PAGE_SHIFT)
arch/arc/include/asm/uaccess.h +9 -2
@@ -83,7 +83,10 @@"2: ;nop\n" \" .section .fixup, \"ax\"\n" \" .align 4\n" \ -"3: mov %0, %3\n" \ +"3: # return -EFAULT\n" \ +" mov %0, %3\n" \ +" # zero out dst ptr\n" \ +" mov %1, 0\n" \" j 2b\n" \" .previous\n" \" .section __ex_table, \"a\"\n" \
@@ -101,7 +104,11 @@"2: ;nop\n" \" .section .fixup, \"ax\"\n" \" .align 4\n" \ -"3: mov %0, %3\n" \ +"3: # return -EFAULT\n" \ +" mov %0, %3\n" \ +" # zero out dst ptr\n" \ +" mov %1, 0\n" \ +" mov %R1, 0\n" \" j 2b\n" \" .previous\n" \" .section __ex_table, \"a\"\n" \
arch/arc/kernel/intc-arcv2.c +1 -1
@@ -74,7 +74,7 @@ void arc_init_IRQ(void) tmp =read_aux_reg (0xa ); tmp |=STATUS_AD_MASK | (irq_prio <<1 ); tmp &= ~STATUS_IE_MASK ; - asmvolatile ("flag %0 \n" ::"r" (tmp)); + asmvolatile ("kflag %0 \n" ::"r" (tmp)); }static void arcv2_irq_mask (struct irq_data *data)
arch/arc/mm/cache.c +9 -0
@@ -921,6 +921,15 @@ void arc_cache_init(void)printk (arc_cache_mumbojumbo (0 , str,sizeof (str))); +/* +* Only master CPU needs to execute rest of function: +* - Assume SMP so all cores will have same cache config so +* any geomtry checks will be same for all +* - IOC setup / dma callbacks only need to be setup once +*/ +if (cpu) +return ; +if (IS_ENABLED (CONFIG_ARC_HAS_ICACHE )) {struct cpuinfo_arc_cache *ic = &cpuinfo_arc700[cpu].icache;
arch/arc/mm/dma.c +2 -1
@@ -92,7 +92,8 @@ static void *arc_dma_alloc(struct device *dev, size_t size,static void arc_dma_free (struct device *dev,size_t size,void *vaddr,dma_addr_t dma_handle,struct dma_attrs *attrs) { -struct page *page =virt_to_page (dma_handle); +phys_addr_t paddr =plat_dma_to_phys (dev, dma_handle); +struct page *page =virt_to_page (paddr);int is_non_coh =1 ; is_non_coh = dma_get_attr(DMA_ATTR_NON_CONSISTENT, attrs) ||
arch/arm/boot/compressed/head.S +1 -1
@@ -779,7 +779,7 @@ __armv7_mmu_cache_on: orrne r0, r0, #1 @ MMU enabled movne r1, #0xfffffffd @ domain 0 = client bic r6, r6, #1 << 31 @ 32-bit translation system - bic r6, r6, #3 << 0 @ use only ttbr0 + bic r6, r6, #(7 << 0) | (1 << 4) @ use only ttbr0 mcrne p15, 0, r3, c2, c0, 0 @ load page table pointer mcrne p15, 0, r1, c3, c0, 0 @ load domain access control mcrne p15, 0, r6, c2, c0, 2 @ load ttb control
arch/arm/boot/dts/arm-realview-pbx-a9.dts +4 -5
@@ -70,13 +70,12 @@ * associativity as these may be erroneously set * up by boot loader(s). */ - cache-size = <1048576>; // 1MB - cache-sets = <4096>; + cache-size = <131072>; // 128KB + cache-sets = <512>; cache-line-size = <32>; arm,parity-disable; - arm,tag-latency = <1>; - arm,data-latency = <1 1>; - arm,dirty-latency = <1>; + arm,tag-latency = <1 1 1>; + arm,data-latency = <1 1 1>; }; scu: scu@1f000000 {
arch/arm/boot/dts/armada-388-clearfog.dts +4 -4
@@ -406,12 +406,12 @@ port@0 { reg = <0>; - label = "lan1"; + label = "lan5"; }; port@1 { reg = <1>; - label = "lan2"; + label = "lan4"; }; port@2 {
@@ -421,12 +421,12 @@ port@3 { reg = <3>; - label = "lan4"; + label = "lan2"; }; port@4 { reg = <4>; - label = "lan5"; + label = "lan1"; }; port@5 {
arch/arm/boot/dts/armada-390.dtsi +3 -0
@@ -47,6 +47,8 @@ #include "armada-39x.dtsi" / { + compatible = "marvell,armada390"; + soc { internal-regs { pinctrl@18000 {
@@ -54,4 +56,5 @@ reg = <0x18000 0x20>; }; }; + }; };
arch/arm/boot/dts/imx6qdl.dtsi +1 -1
@@ -242,7 +242,7 @@ clocks = <&clks IMX6QDL_CLK_SPDIF_GCLK>, <&clks IMX6QDL_CLK_OSC>, <&clks IMX6QDL_CLK_SPDIF>, <&clks IMX6QDL_CLK_ASRC>, <&clks IMX6QDL_CLK_DUMMY>, <&clks IMX6QDL_CLK_ESAI_EXTAL>, - <&clks IMX6QDL_CLK_IPG>, <&clks IMX6QDL_CLK_MLB>, + <&clks IMX6QDL_CLK_IPG>, <&clks IMX6QDL_CLK_DUMMY>, <&clks IMX6QDL_CLK_DUMMY>, <&clks IMX6QDL_CLK_SPBA>; clock-names = "core", "rxtx0", "rxtx1", "rxtx2",
arch/arm/boot/dts/imx6sx-sabreauto.dts +1 -1
@@ -64,7 +64,7 @@ cd-gpios = <&gpio7 11 GPIO_ACTIVE_LOW>; no-1-8-v; keep-power-in-suspend; - enable-sdio-wakup; + wakeup-source; status = "okay"; };
arch/arm/boot/dts/kirkwood-ib62x0.dts +1 -1
@@ -113,7 +113,7 @@ partition@e0000 { label = "u-boot environment"; - reg = <0xe0000 0x100000>; + reg = <0xe0000 0x20000>; }; partition@100000 {
arch/arm/boot/dts/kirkwood-openrd.dtsi +4 -0
@@ -116,6 +116,10 @@ }; }; +&pciec { + status = "okay"; +}; + &pcie0 { status = "okay"; };
arch/arm/boot/dts/omap3-overo-base.dtsi +3 -1
@@ -223,7 +223,9 @@ }; &gpmc { - ranges = <0 0 0x00000000 0x20000000>; + ranges = <0 0 0x30000000 0x1000000>, /* CS0 */ + <4 0 0x2b000000 0x1000000>, /* CS4 */ + <5 0 0x2c000000 0x1000000>; /* CS5 */ nand@0,0 { compatible = "ti,omap2-nand";
arch/arm/boot/dts/omap3-overo-chestnut43-common.dtsi +0 -2
@@ -55,8 +55,6 @@ #include "omap-gpmc-smsc9221.dtsi" &gpmc { - ranges = <5 0 0x2c000000 0x1000000>; /* CS5 */ - ethernet@gpmc { reg = <5 0 0xff>; interrupt-parent = <&gpio6>;
arch/arm/boot/dts/omap3-overo-tobi-common.dtsi +0 -2
@@ -27,8 +27,6 @@ #include "omap-gpmc-smsc9221.dtsi" &gpmc { - ranges = <5 0 0x2c000000 0x1000000>; /* CS5 */ - ethernet@gpmc { reg = <5 0 0xff>; interrupt-parent = <&gpio6>;
arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi +0 -3
@@ -15,9 +15,6 @@ #include "omap-gpmc-smsc9221.dtsi" &gpmc { - ranges = <4 0 0x2b000000 0x1000000>, /* CS4 */ - <5 0 0x2c000000 0x1000000>; /* CS5 */ - smsc1: ethernet@gpmc { reg = <5 0 0xff>; interrupt-parent = <&gpio6>;
arch/arm/boot/dts/qcom-apq8064.dtsi +57 -19
94 lines not on this page · raw message
arch/arm/boot/dts/rk3066a.dtsi +2 -0
@@ -197,6 +197,8 @@ clock-names = "saradc", "apb_pclk"; interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; #io-channel-cells = <1>; + resets = <&cru SRST_SARADC>; + reset-names = "saradc-apb"; status = "disabled"; };
arch/arm/boot/dts/rk3288.dtsi +2 -0
@@ -279,6 +279,8 @@ #io-channel-cells = <1>; clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>; clock-names = "saradc", "apb_pclk"; + resets = <&cru SRST_SARADC>; + reset-names = "saradc-apb"; status = "disabled"; };
arch/arm/boot/dts/rk3xxx.dtsi +2 -0
@@ -399,6 +399,8 @@ #io-channel-cells = <1>; clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>; clock-names = "saradc", "apb_pclk"; + resets = <&cru SRST_SARADC>; + reset-names = "saradc-apb"; status = "disabled"; };
arch/arm/boot/dts/stih407-family.dtsi +6 -4
@@ -550,8 +550,9 @@ interrupt-names = "mmcirq"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_mmc0>; - clock-names = "mmc"; - clocks = <&clk_s_c0_flexgen CLK_MMC_0>; + clock-names = "mmc", "icn"; + clocks = <&clk_s_c0_flexgen CLK_MMC_0>, + <&clk_s_c0_flexgen CLK_RX_ICN_HVA>; bus-width = <8>; non-removable; };
@@ -565,8 +566,9 @@ interrupt-names = "mmcirq"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_sd1>; - clock-names = "mmc"; - clocks = <&clk_s_c0_flexgen CLK_MMC_1>; + clock-names = "mmc", "icn"; + clocks = <&clk_s_c0_flexgen CLK_MMC_1>, + <&clk_s_c0_flexgen CLK_RX_ICN_HVA>; resets = <&softreset STIH407_MMC1_SOFTRESET>; bus-width = <4>; };
arch/arm/boot/dts/stih410.dtsi +8 -4
@@ -41,7 +41,8 @@ compatible = "st,st-ohci-300x"; reg = <0x9a03c00 0x100>; interrupts = <GIC_SPI 180 IRQ_TYPE_NONE>; - clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>; + clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>, + <&clk_s_c0_flexgen CLK_RX_ICN_DISP_0>; resets = <&powerdown STIH407_USB2_PORT0_POWERDOWN>, <&softreset STIH407_USB2_PORT0_SOFTRESET>; reset-names = "power", "softreset";
@@ -57,7 +58,8 @@ interrupts = <GIC_SPI 151 IRQ_TYPE_NONE>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usb0>; - clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>; + clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>, + <&clk_s_c0_flexgen CLK_RX_ICN_DISP_0>; resets = <&powerdown STIH407_USB2_PORT0_POWERDOWN>, <&softreset STIH407_USB2_PORT0_SOFTRESET>; reset-names = "power", "softreset";
@@ -71,7 +73,8 @@ compatible = "st,st-ohci-300x"; reg = <0x9a83c00 0x100>; interrupts = <GIC_SPI 181 IRQ_TYPE_NONE>; - clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>; + clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>, + <&clk_s_c0_flexgen CLK_RX_ICN_DISP_0>; resets = <&powerdown STIH407_USB2_PORT1_POWERDOWN>, <&softreset STIH407_USB2_PORT1_SOFTRESET>; reset-names = "power", "softreset";
@@ -87,7 +90,8 @@ interrupts = <GIC_SPI 153 IRQ_TYPE_NONE>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usb1>; - clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>; + clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>, + <&clk_s_c0_flexgen CLK_RX_ICN_DISP_0>; resets = <&powerdown STIH407_USB2_PORT1_POWERDOWN>, <&softreset STIH407_USB2_PORT1_SOFTRESET>; reset-names = "power", "softreset";
arch/arm/boot/dts/sun4i-a10-a1000.dts +1 -0
@@ -84,6 +84,7 @@ regulator-name = "emac-3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; + startup-delay-us = <20000>; enable-active-high; gpio = <&pio 7 15 GPIO_ACTIVE_HIGH>; };
arch/arm/boot/dts/sun4i-a10-hackberry.dts +1 -0
@@ -66,6 +66,7 @@ regulator-name = "emac-3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; + startup-delay-us = <20000>; enable-active-high; gpio = <&pio 7 19 GPIO_ACTIVE_HIGH>; };
arch/arm/boot/dts/sun4i-a10-jesurun-q5.dts +1 -0
@@ -80,6 +80,7 @@ regulator-name = "emac-3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; + startup-delay-us = <20000>; enable-active-high; gpio = <&pio 7 19 GPIO_ACTIVE_HIGH>; /* PH19 */ };
arch/arm/boot/dts/sun5i-a10s-wobo-i5.dts +1 -0
@@ -79,6 +79,7 @@ regulator-name = "emac-3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; + startup-delay-us = <20000>; enable-active-high; gpio = <&pio 0 2 GPIO_ACTIVE_HIGH>; };
arch/arm/boot/dts/sun5i-a13.dtsi +1 -1
@@ -84,7 +84,7 @@ trips { cpu_alert0: cpu_alert0 { /* milliCelsius */ - temperature = <850000>; + temperature = <85000>; hysteresis = <2000>; type = "passive"; };
arch/arm/boot/dts/tegra124-jetson-tk1.dts +2 -2
@@ -1386,7 +1386,7 @@ * Pin 41: BR_UART1_TXD * Pin 44: BR_UART1_RXD */ - serial@70006000 { + serial@0,70006000 { compatible = "nvidia,tegra124-hsuart", "nvidia,tegra30-hsuart"; status = "okay"; };
@@ -1398,7 +1398,7 @@ * Pin 71: UART2_CTS_L * Pin 74: UART2_RTS_L */ - serial@70006040 { + serial@0,70006040 { compatible = "nvidia,tegra124-hsuart", "nvidia,tegra30-hsuart"; status = "okay"; };
arch/arm/common/sa1111.c +13 -9
@@ -869,9 +869,9 @@ struct sa1111_save_data {#ifdef CONFIG_PM -static int sa1111_suspend (struct platform_device *dev,pm_message_t state) +static int sa1111_suspend_noirq (struct device *dev) { -struct sa1111 *sachip =platform_get_drvdata (dev); +struct sa1111 *sachip =dev_get_drvdata (dev);struct sa1111_save_data *save;unsigned long flags;unsigned int val;
@@ -934,9 +934,9 @@ static int sa1111_suspend(struct platform_device *dev, pm_message_t state)* restored by their respective drivers, and must be called * via LDM after this function. */ -static int sa1111_resume (struct platform_device *dev) +static int sa1111_resume_noirq (struct device *dev) { -struct sa1111 *sachip =platform_get_drvdata (dev); +struct sa1111 *sachip =dev_get_drvdata (dev);struct sa1111_save_data *save;unsigned long flags, id;void __iomem *base;
@@ -952,7 +952,7 @@ static int sa1111_resume(struct platform_device *dev) id =sa1111_readl (sachip->base +SA1111_SKID );if ((id &SKID_ID_MASK ) !=SKID_SA1111_ID ) {__sa1111_remove (sachip); -platform_set_drvdata (dev,NULL ); +dev_set_drvdata (dev,NULL );kfree (save);return 0 ; }
@@ -1003,8 +1003,8 @@ static int sa1111_resume(struct platform_device *dev) }#else -#define sa1111_suspend NULL -#define sa1111_resume NULL +#define sa1111_suspend_noirq NULL +#define sa1111_resume_noirq NULL#endif static int sa1111_probe (struct platform_device *pdev)
@@ -1038,6 +1038,11 @@ static int sa1111_remove(struct platform_device *pdev)return 0 ; } +static struct dev_pm_ops sa1111_pm_ops = { + .suspend_noirq = sa1111_suspend_noirq, + .resume_noirq = sa1111_resume_noirq, +}; +/* * Not sure if this should be on the system bus or not yet. * We really want some way to register a system device at
@@ -1050,10 +1055,9 @@ static int sa1111_remove(struct platform_device *pdev)static struct platform_driver sa1111_device_driver = { .probe = sa1111_probe, .remove = sa1111_remove, - .suspend = sa1111_suspend, - .resume = sa1111_resume, .driver = { .name ="sa1111" , + .pm = &sa1111_pm_ops, }, };
arch/arm/configs/aspeed_g4_defconfig +1 -1
@@ -58,7 +58,7 @@ CONFIG_SERIAL_OF_PLATFORM=y # CONFIG_IOMMU_SUPPORT is not set CONFIG_FIRMWARE_MEMMAP=y CONFIG_FANOTIFY=y -CONFIG_PRINTK_TIME=1 +CONFIG_PRINTK_TIME=y CONFIG_DYNAMIC_DEBUG=y CONFIG_STRIP_ASM_SYMS=y CONFIG_PAGE_POISONING=y
arch/arm/configs/aspeed_g5_defconfig +1 -1
@@ -59,7 +59,7 @@ CONFIG_SERIAL_OF_PLATFORM=y # CONFIG_IOMMU_SUPPORT is not set CONFIG_FIRMWARE_MEMMAP=y CONFIG_FANOTIFY=y -CONFIG_PRINTK_TIME=1 +CONFIG_PRINTK_TIME=y CONFIG_DYNAMIC_DEBUG=y CONFIG_STRIP_ASM_SYMS=y CONFIG_PAGE_POISONING=y
arch/arm/crypto/aes-ce-glue.c +1 -1
@@ -284,7 +284,7 @@ static int ctr_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst, err =blkcipher_walk_done (desc, &walk, walk.nbytes %AES_BLOCK_SIZE ); } -if (nbytes) { +if (walk.nbytes %AES_BLOCK_SIZE ) {u8 *tdst = walk.dst.virt.addr + blocks *AES_BLOCK_SIZE ;u8 *tsrc = walk.src.virt.addr + blocks *AES_BLOCK_SIZE ;u8 __aligned(8) tail[AES_BLOCK_SIZE ];
arch/arm/include/asm/dma-mapping.h +1 -1
@@ -112,7 +112,7 @@ static inline dma_addr_t virt_to_dma(struct device *dev, void *addr)/* The ARM override for dma_max_pfn() */ static inline unsigned long dma_max_pfn (struct device *dev) { -return PHYS_PFN_OFFSET +dma_to_pfn (dev, *dev->dma_mask); +return dma_to_pfn (dev, *dev->dma_mask); }#define dma_max_pfn (dev) dma_max_pfn(dev)
arch/arm/kernel/devtree.c +11 -3
@@ -87,6 +87,8 @@ void __init arm_dt_init_cpu_maps(void)return ;for_each_child_of_node (cpus, cpu) { +const __be32 *cell; +int prop_bytes;u32 hwid;if (of_node_cmp (cpu->type,"cpu" ))
@@ -98,7 +100,8 @@ void __init arm_dt_init_cpu_maps(void)* properties is considered invalid to build the * cpu_logical_map. */ -if (of_property_read_u32 (cpu,"reg" , &hwid)) { + cell =of_get_property (cpu,"reg" , &prop_bytes); +if (!cell || prop_bytes <sizeof (*cell)) {pr_debug (" * %s missing reg property\n" , cpu->full_name);of_node_put (cpu);
@@ -106,10 +109,15 @@ void __init arm_dt_init_cpu_maps(void) }/* -* 8 MSBs must be set to 0 in the DT since the reg property +* Bits n:24 must be set to 0 in the DT since the reg property * defines the MPIDR[23:0]. */ -if (hwid & ~MPIDR_HWID_BITMASK ) { +do { + hwid =be32_to_cpu (*cell++); + prop_bytes -=sizeof (*cell); + }while (!hwid && prop_bytes >0 ); + +if (prop_bytes || (hwid & ~MPIDR_HWID_BITMASK )) {of_node_put (cpu);return ; }
arch/arm/kernel/sys_oabi-compat.c +7 -1
@@ -279,8 +279,12 @@ asmlinkage long sys_oabi_epoll_wait(int epfd,mm_segment_t fs;long ret, err, i; -if (maxevents <=0 || maxevents > (INT_MAX /sizeof (struct epoll_event ))) +if (maxevents <=0 || + maxevents > (INT_MAX /sizeof (*kbuf)) || + maxevents > (INT_MAX /sizeof (*events)))return -EINVAL ; +if (!access_ok (VERIFY_WRITE , events,sizeof (*events) * maxevents)) +return -EFAULT ; kbuf =kmalloc (sizeof (*kbuf) * maxevents,GFP_KERNEL );if (!kbuf)return -ENOMEM ;
@@ -317,6 +321,8 @@ asmlinkage long sys_oabi_semtimedop(int semid,if (nsops <1 || nsops >SEMOPM )return -EINVAL ; +if (!access_ok (VERIFY_READ , tsops,sizeof (*tsops) * nsops)) +return -EFAULT ; sops =kmalloc (sizeof (*sops) * nsops,GFP_KERNEL );if (!sops)return -ENOMEM ;
arch/arm/kvm/arm.c +0 -2
@@ -157,8 +157,6 @@ void kvm_arch_destroy_vm(struct kvm *kvm) {int i; -kvm_free_stage2_pgd (kvm); -for (i =0 ; i <KVM_MAX_VCPUS ; ++i) {if (kvm->vcpus[i]) {kvm_arch_vcpu_free (kvm->vcpus[i]);
arch/arm/kvm/mmu.c +1 -0
@@ -1909,6 +1909,7 @@ void kvm_arch_memslots_updated(struct kvm *kvm, struct kvm_memslots *slots)void kvm_arch_flush_shadow_all (struct kvm *kvm) { +kvm_free_stage2_pgd (kvm); } void kvm_arch_flush_shadow_memslot(struct kvm *kvm,
arch/arm/mach-imx/pm-imx6.c +2 -2
@@ -295,7 +295,7 @@ int imx6_set_lpm(enum mxc_cpu_pwr_mode mode) val &= ~BM_CLPCR_SBYOS ;if (cpu_is_imx6sl ()) val |=BM_CLPCR_BYPASS_PMIC_READY ; -if (cpu_is_imx6sl () ||cpu_is_imx6sx ()) +if (cpu_is_imx6sl () ||cpu_is_imx6sx () ||cpu_is_imx6ul ()) val |=BM_CLPCR_BYP_MMDC_CH0_LPM_HS ;else val |=BM_CLPCR_BYP_MMDC_CH1_LPM_HS ;
@@ -310,7 +310,7 @@ int imx6_set_lpm(enum mxc_cpu_pwr_mode mode) val |=0x3 <<BP_CLPCR_STBY_COUNT ; val |=BM_CLPCR_VSTBY ; val |=BM_CLPCR_SBYOS ; -if (cpu_is_imx6sl ()) +if (cpu_is_imx6sl () ||cpu_is_imx6sx ()) val |=BM_CLPCR_BYPASS_PMIC_READY ;if (cpu_is_imx6sl () ||cpu_is_imx6sx () ||cpu_is_imx6ul ()) val |=BM_CLPCR_BYP_MMDC_CH0_LPM_HS ;
arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c +1 -0
@@ -1476,6 +1476,7 @@ static void omap_hwmod_am43xx_rst(void) {RSTCTRL (am33xx_pruss_hwmod,AM43XX_RM_PER_RSTCTRL_OFFSET );RSTCTRL (am33xx_gfx_hwmod,AM43XX_RM_GFX_RSTCTRL_OFFSET ); +RSTST (am33xx_pruss_hwmod,AM43XX_RM_PER_RSTST_OFFSET );RSTST (am33xx_gfx_hwmod,AM43XX_RM_GFX_RSTST_OFFSET ); }
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +12 -0
@@ -722,8 +722,20 @@ static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {* display serial interface controller */ +static struct omap_hwmod_class_sysconfig omap3xxx_dsi_sysc = { + .rev_offs =0x0000 , + .sysc_offs =0x0010 , + .syss_offs =0x0014 , + .sysc_flags = (SYSC_HAS_AUTOIDLE |SYSC_HAS_CLOCKACTIVITY | +SYSC_HAS_ENAWAKEUP |SYSC_HAS_SIDLEMODE | +SYSC_HAS_SOFTRESET |SYSS_HAS_RESET_STATUS ), + .idlemodes = (SIDLE_FORCE |SIDLE_NO |SIDLE_SMART ), + .sysc_fields = &omap_hwmod_sysc_type1, +}; +static struct omap_hwmod_class omap3xxx_dsi_hwmod_class = { .name ="dsi" , + .sysc = &omap3xxx_dsi_sysc, };static struct omap_hwmod_irq_info omap3xxx_dsi1_irqs[] = {
arch/arm/mach-omap2/prcm43xx.h +1 -0
@@ -39,6 +39,7 @@/* RM RSTST offsets */ #define AM43XX_RM_GFX_RSTST_OFFSET 0x0014 +#define AM43XX_RM_PER_RSTST_OFFSET 0x0014#define AM43XX_RM_WKUP_RSTST_OFFSET 0x0014/* CM instances */
arch/arm/mach-pxa/idp.c +2 -1
@@ -83,7 +83,8 @@ static struct resource smc91x_resources[] = { };static struct smc91x_platdata smc91x_platdata = { - .flags =SMC91X_USE_32BIT |SMC91X_USE_DMA |SMC91X_NOWAIT , + .flags =SMC91X_USE_8BIT |SMC91X_USE_16BIT |SMC91X_USE_32BIT | +SMC91X_USE_DMA |SMC91X_NOWAIT , };static struct platform_device smc91x_device = {
arch/arm/mach-pxa/xcep.c +2 -1
@@ -120,7 +120,8 @@ static struct resource smc91x_resources[] = { };static struct smc91x_platdata xcep_smc91x_info = { - .flags =SMC91X_USE_32BIT |SMC91X_NOWAIT |SMC91X_USE_DMA , + .flags =SMC91X_USE_8BIT |SMC91X_USE_16BIT |SMC91X_USE_32BIT | +SMC91X_NOWAIT |SMC91X_USE_DMA , };static struct platform_device smc91x_device = {
arch/arm/mach-realview/core.c +2 -1
@@ -93,7 +93,8 @@ static struct smsc911x_platform_config smsc911x_config = { };static struct smc91x_platdata smc91x_platdata = { - .flags =SMC91X_USE_32BIT |SMC91X_NOWAIT , + .flags =SMC91X_USE_8BIT |SMC91X_USE_16BIT |SMC91X_USE_32BIT | +SMC91X_NOWAIT , };static struct platform_device realview_eth_device = {
arch/arm/mach-sa1100/clock.c +3 -2
@@ -125,6 +125,8 @@ static unsigned long clk_36864_get_rate(struct clk *clk) }static struct clkops clk_36864_ops = { + .enable = clk_cpu_enable, + .disable = clk_cpu_disable, .get_rate = clk_36864_get_rate, };
@@ -140,9 +142,8 @@ static struct clk_lookup sa11xx_clkregs[] = { CLKDEV_INIT(NULL, "OSTIMER0", &clk_36864), }; -static int __init sa11xx_clk_init (void ) +int __init sa11xx_clk_init (void ) {clkdev_add_table (sa11xx_clkregs,ARRAY_SIZE (sa11xx_clkregs));return 0 ; } -core_initcall (sa11xx_clk_init);
arch/arm/mach-sa1100/generic.c +4 -0
@@ -34,6 +34,7 @@#include <mach/hardware.h> #include <mach/irqs.h> +#include <mach/reset.h> #include "generic.h" #include <clocksource/pxa.h>
@@ -95,6 +96,8 @@ static void sa1100_power_off(void)void sa11x0_restart (enum reboot_mode mode,const char *cmd) { +clear_reset_status (RESET_STATUS_ALL ); +if (mode ==REBOOT_SOFT ) {/* Jump into ROM at address 0 */ soft_restart (0 );
@@ -388,6 +391,7 @@ void __init sa1100_init_irq(void)sa11x0_init_irq_nodt (IRQ_GPIO0_SC , irq_resource.start);sa1100_init_gpio (); +sa11xx_clk_init (); }/*
arch/arm/mach-sa1100/generic.h +2 -0
@@ -44,3 +44,5 @@ int sa11x0_pm_init(void);#else static inline int sa11x0_pm_init (void ) {return 0 ; }#endif + +int sa11xx_clk_init (void );
arch/arm/mach-sa1100/pleb.c +1 -1
@@ -45,7 +45,7 @@ static struct resource smc91x_resources[] = { };static struct smc91x_platdata smc91x_platdata = { - .flags =SMC91X_USE_16BIT |SMC91X_NOWAIT , + .flags =SMC91X_USE_16BIT |SMC91X_USE_8BIT |SMC91X_NOWAIT , };static struct platform_device smc91x_device = {
arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c +26 -36
77 lines not on this page · raw message
arch/arm/mm/dma-mapping.c +42 -20
185 lines not on this page · raw message
arch/arm64/Kconfig +1 -1
@@ -872,7 +872,7 @@ config RELOCATABLE config RANDOMIZE_BASE bool "Randomize the address of the kernel image" - select ARM64_MODULE_PLTS + select ARM64_MODULE_PLTS if MODULES select RELOCATABLE help Randomizes the virtual address at which the kernel image is
arch/arm64/boot/dts/rockchip/rk3368.dtsi +3 -1
@@ -270,6 +270,8 @@ #io-channel-cells = <1>; clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>; clock-names = "saradc", "apb_pclk"; + resets = <&cru SRST_SARADC>; + reset-names = "saradc-apb"; status = "disabled"; };
@@ -670,7 +672,7 @@ #address-cells = <0>; reg = <0x0 0xffb71000 0x0 0x1000>, - <0x0 0xffb72000 0x0 0x1000>, + <0x0 0xffb72000 0x0 0x2000>, <0x0 0xffb74000 0x0 0x2000>, <0x0 0xffb76000 0x0 0x2000>; interrupts = <GIC_PPI 9
arch/arm64/crypto/aes-glue.c +1 -1
@@ -216,7 +216,7 @@ static int ctr_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst, err =blkcipher_walk_done (desc, &walk, walk.nbytes %AES_BLOCK_SIZE ); } -if (nbytes) { +if (walk.nbytes %AES_BLOCK_SIZE ) {u8 *tdst = walk.dst.virt.addr + blocks *AES_BLOCK_SIZE ;u8 *tsrc = walk.src.virt.addr + blocks *AES_BLOCK_SIZE ;u8 __aligned(8) tail[AES_BLOCK_SIZE ];
arch/arm64/include/asm/elf.h +1 -0
@@ -140,6 +140,7 @@ typedef struct user_fpsimd_state elf_fpregset_t;#define SET_PERSONALITY (ex) clear_thread_flag(TIF_32BIT); +/* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */ #define ARCH_DLINFO \ do { \ NEW_AUX_ENT(AT_SYSINFO_EHDR, \
arch/arm64/include/asm/spinlock.h +10 -0
@@ -363,4 +363,14 @@ static inline int arch_read_trylock(arch_rwlock_t *rw)#define arch_read_relax (lock) cpu_relax()#define arch_write_relax (lock) cpu_relax() +/* +* Accesses appearing in program order before a spin_lock() operation +* can be reordered with accesses inside the critical section, by virtue +* of arch_spin_lock being constructed using acquire semantics. +* +* In cases where this is problematic (e.g. try_to_wake_up), an +* smp_mb__before_spinlock() can restore the required ordering. +*/ +#define smp_mb__before_spinlock () smp_mb() +#endif /* __ASM_SPINLOCK_H */
arch/arm64/include/uapi/asm/auxvec.h +2 -0
@@ -19,4 +19,6 @@/* vDSO location */ #define AT_SYSINFO_EHDR 33 +#define AT_VECTOR_SIZE_ARCH 1/* entries in ARCH_DLINFO */ +#endif
arch/arm64/kernel/debug-monitors.c +4 -3
@@ -151,7 +151,6 @@ static int debug_monitors_init(void)/* Clear the OS lock. */ on_each_cpu (clear_os_lock,NULL ,1 );isb (); -local_dbg_enable ();/* Register hotplug handler. */ __register_cpu_notifier (&os_lock_nb);
@@ -418,8 +417,10 @@ int kernel_active_single_step(void)/* ptrace API */ void user_enable_single_step (struct task_struct *task) { -set_ti_thread_flag (task_thread_info (task),TIF_SINGLESTEP ); -set_regs_spsr_ss (task_pt_regs (task)); +struct thread_info *ti =task_thread_info (task); + +if (!test_and_set_ti_thread_flag (ti,TIF_SINGLESTEP )) +set_regs_spsr_ss (task_pt_regs (task)); }void user_disable_single_step (struct task_struct *task)
arch/arm64/kernel/head.S +3 -0
@@ -757,6 +757,9 @@ ENTRY(__enable_mmu) isb bl __create_page_tables // recreate kernel mapping + tlbi vmalle1 // Remove any stale TLB entries + dsb nsh + msr sctlr_el1, x19 // re-enable the MMU isb ic iallu // flush instructions fetched
arch/arm64/kernel/hibernate.c +49 -33
112 lines not on this page · raw message
arch/arm64/kernel/sleep.S +9 -1
@@ -101,12 +101,20 @@ ENTRY(cpu_resume) bl el2_setup // if in EL2 drop to EL1 cleanly /* enable the MMU early - so we can access sleep_save_stash by va */ adr_l lr, __enable_mmu /* __cpu_setup will return here */ - ldr x27, =_cpu_resume /* __enable_mmu will branch here */ + adr_l x27, _resume_switched /* __enable_mmu will branch here */ adrp x25, idmap_pg_dir adrp x26, swapper_pg_dir b __cpu_setup ENDPROC(cpu_resume) + .pushsection ".idmap.text", "ax" +_resume_switched: + ldr x8, =_cpu_resume + br x8 +ENDPROC(_resume_switched) + .ltorg + .popsection + ENTRY(_cpu_resume) mrs x1, mpidr_el1 adrp x8, mpidr_hash
arch/arm64/kernel/smp.c +14 -10
@@ -201,12 +201,6 @@ int __cpu_up(unsigned int cpu, struct task_struct *idle)return ret; } -static void smp_store_cpu_info (unsigned int cpuid) -{ -store_cpu_topology (cpuid); -numa_store_cpu_info (cpuid); -} -/* * This is the secondary CPU boot entry. We're using this CPUs * idle thread stack, but a set of temporary page tables.
@@ -254,7 +248,7 @@ asmlinkage void secondary_start_kernel(void)*/ notify_cpu_starting (cpu); -smp_store_cpu_info (cpu); +store_cpu_topology (cpu);/* * OK, now it's safe to let the boot CPU continue. Wait for
@@ -267,7 +261,6 @@ asmlinkage void secondary_start_kernel(void)set_cpu_online (cpu, true);complete (&cpu_running); -local_dbg_enable ();local_irq_enable ();local_async_enable ();
@@ -437,9 +430,9 @@ void __init smp_cpus_done(unsigned int max_cpus)void __init smp_prepare_boot_cpu (void ) { +set_my_cpu_offset (per_cpu_offset (smp_processor_id ()));cpuinfo_store_boot_cpu ();save_boot_cpu_run_el (); -set_my_cpu_offset (per_cpu_offset (smp_processor_id ())); }static u64 __init of_get_cpu_mpidr (struct device_node *dn)
@@ -688,10 +681,20 @@ void __init smp_prepare_cpus(unsigned int max_cpus) {int err;unsigned int cpu; +unsigned int this_cpu;init_cpu_topology (); -smp_store_cpu_info (smp_processor_id ()); + this_cpu =smp_processor_id (); +store_cpu_topology (this_cpu); +numa_store_cpu_info (this_cpu); + +/* +* If UP is mandated by "nosmp" (which implies "maxcpus=0"), don't set +* secondary CPUs present. +*/ +if (max_cpus ==0 ) +return ;/* * Initialise the present map (which describes the set of CPUs
@@ -711,6 +714,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus)continue ;set_cpu_present (cpu, true); +numa_store_cpu_info (cpu); } }
arch/arm64/kernel/stacktrace.c +4 -1
@@ -43,6 +43,9 @@ int notrace unwind_frame(struct task_struct *tsk, struct stackframe *frame)unsigned long fp = frame->fp;unsigned long irq_stack_ptr; +if (!tsk) + tsk = current; +/* * Switching between stacks is valid when tracing current and in * non-preemptible context.
@@ -67,7 +70,7 @@ int notrace unwind_frame(struct task_struct *tsk, struct stackframe *frame) frame->pc =READ_ONCE_NOCHECK (*(unsigned long *)(fp +8 ));#ifdef CONFIG_FUNCTION_GRAPH_TRACER -if (tsk && tsk->ret_stack && +if (tsk->ret_stack && (frame->pc == (unsigned long )return_to_handler)) {/* * This is a case where function graph tracer has
arch/arm64/kernel/traps.c +5 -5
@@ -149,6 +149,11 @@ static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk)unsigned long irq_stack_ptr;int skip; +pr_debug ("%s(regs = %p tsk = %p)\n" , __func__, regs, tsk); + +if (!tsk) + tsk = current; +/* * Switching between stacks is valid when tracing current and in * non-preemptible context.
@@ -158,11 +163,6 @@ static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk)else irq_stack_ptr =0 ; -pr_debug ("%s(regs = %p tsk = %p)\n" , __func__, regs, tsk); - -if (!tsk) - tsk = current; -if (tsk == current) { frame.fp = (unsigned long )__builtin_frame_address (0 ); frame.sp = current_stack_pointer;
arch/arm64/kernel/vmlinux.lds.S +2 -2
@@ -181,9 +181,9 @@ SECTIONS *(.hash) } - __rela_offset = ADDR(.rela) - KIMAGE_VADDR; + __rela_offset = ABSOLUTE(ADDR(.rela) - KIMAGE_VADDR); __rela_size = SIZEOF(.rela); - __dynsym_offset = ADDR(.dynsym) - KIMAGE_VADDR; + __dynsym_offset = ABSOLUTE(ADDR(.dynsym) - KIMAGE_VADDR); . = ALIGN(SEGMENT_ALIGN); __init_end = .;
arch/arm64/kvm/hyp/sysreg-sr.c +4 -4
@@ -27,8 +27,8 @@ static void __hyp_text __sysreg_do_nothing(struct kvm_cpu_context *ctxt) { }/* * Non-VHE: Both host and guest must save everything. * -* VHE: Host must save tpidr*_el[01], actlr_el1, sp0, pc, pstate, and -* guest must save everything. +* VHE: Host must save tpidr*_el[01], actlr_el1, mdscr_el1, sp0, pc, +* pstate, and guest must save everything. */ static void __hyp_text __sysreg_save_common_state(struct kvm_cpu_context *ctxt)
@@ -37,6 +37,7 @@ static void __hyp_text __sysreg_save_common_state(struct kvm_cpu_context *ctxt) ctxt->sys_regs[TPIDR_EL0 ] =read_sysreg (tpidr_el0); ctxt->sys_regs[TPIDRRO_EL0 ] =read_sysreg (tpidrro_el0); ctxt->sys_regs[TPIDR_EL1 ] =read_sysreg (tpidr_el1); + ctxt->sys_regs[MDSCR_EL1 ] =read_sysreg (mdscr_el1); ctxt->gp_regs.regs.sp =read_sysreg (sp_el0); ctxt->gp_regs.regs.pc =read_sysreg_el2 (elr); ctxt->gp_regs.regs.pstate =read_sysreg_el2 (spsr);
@@ -61,7 +62,6 @@ static void __hyp_text __sysreg_save_state(struct kvm_cpu_context *ctxt) ctxt->sys_regs[AMAIR_EL1 ] =read_sysreg_el1 (amair); ctxt->sys_regs[CNTKCTL_EL1 ] =read_sysreg_el1 (cntkctl); ctxt->sys_regs[PAR_EL1 ] =read_sysreg (par_el1); - ctxt->sys_regs[MDSCR_EL1 ] =read_sysreg (mdscr_el1); ctxt->gp_regs.sp_el1 =read_sysreg (sp_el1); ctxt->gp_regs.elr_el1 =read_sysreg_el1 (elr);
@@ -90,6 +90,7 @@ static void __hyp_text __sysreg_restore_common_state(struct kvm_cpu_context *ctxwrite_sysreg (ctxt->sys_regs[TPIDR_EL0 ], tpidr_el0);write_sysreg (ctxt->sys_regs[TPIDRRO_EL0 ], tpidrro_el0);write_sysreg (ctxt->sys_regs[TPIDR_EL1 ], tpidr_el1); +write_sysreg (ctxt->sys_regs[MDSCR_EL1 ], mdscr_el1);write_sysreg (ctxt->gp_regs.regs.sp, sp_el0);write_sysreg_el2 (ctxt->gp_regs.regs.pc, elr);write_sysreg_el2 (ctxt->gp_regs.regs.pstate, spsr);
@@ -114,7 +115,6 @@ static void __hyp_text __sysreg_restore_state(struct kvm_cpu_context *ctxt)write_sysreg_el1 (ctxt->sys_regs[AMAIR_EL1 ], amair);write_sysreg_el1 (ctxt->sys_regs[CNTKCTL_EL1 ], cntkctl);write_sysreg (ctxt->sys_regs[PAR_EL1 ], par_el1); -write_sysreg (ctxt->sys_regs[MDSCR_EL1 ], mdscr_el1);write_sysreg (ctxt->gp_regs.sp_el1, sp_el1);write_sysreg_el1 (ctxt->gp_regs.elr_el1, elr);
arch/arm64/kvm/inject_fault.c +5 -7
@@ -132,16 +132,14 @@ static u64 get_except_vector(struct kvm_vcpu *vcpu, enum exception_type type)static void inject_abt64 (struct kvm_vcpu *vcpu,bool is_iabt,unsigned long addr) {unsigned long cpsr = *vcpu_cpsr (vcpu); -bool is_aarch32; +bool is_aarch32 =vcpu_mode_is_32bit (vcpu);u32 esr =0 ; - is_aarch32 =vcpu_mode_is_32bit (vcpu); - - *vcpu_spsr (vcpu) = cpsr; *vcpu_elr_el1 (vcpu) = *vcpu_pc (vcpu); - *vcpu_pc (vcpu) =get_except_vector (vcpu, except_type_sync); + *vcpu_cpsr (vcpu) =PSTATE_FAULT_BITS_64 ; + *vcpu_spsr (vcpu) = cpsr;vcpu_sys_reg (vcpu,FAR_EL1 ) = addr;
@@ -172,11 +170,11 @@ static void inject_undef64(struct kvm_vcpu *vcpu)unsigned long cpsr = *vcpu_cpsr (vcpu);u32 esr = (ESR_ELx_EC_UNKNOWN << ESR_ELx_EC_SHIFT); - *vcpu_spsr (vcpu) = cpsr; *vcpu_elr_el1 (vcpu) = *vcpu_pc (vcpu); - *vcpu_pc (vcpu) =get_except_vector (vcpu, except_type_sync); + *vcpu_cpsr (vcpu) =PSTATE_FAULT_BITS_64 ; + *vcpu_spsr (vcpu) = cpsr;/* * Build an unknown exception, depending on the instruction
arch/arm64/mm/mmu.c +4 -4
@@ -748,9 +748,9 @@ void *__init __fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)/* * Check whether the physical FDT address is set and meets the minimum * alignment requirement. Since we are relying on MIN_FDT_ALIGN to be -* at least 8 bytes so that we can always access the size field of the -* FDT header after mapping the first chunk, double check here if that -* is indeed the case. +* at least 8 bytes so that we can always access the magic and size +* fields of the FDT header after mapping the first chunk, double check +* here if that is indeed the case. */ BUILD_BUG_ON (MIN_FDT_ALIGN <8 );if (!dt_phys || dt_phys %MIN_FDT_ALIGN )
@@ -778,7 +778,7 @@ void *__init __fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)create_mapping_noalloc (round_down (dt_phys,SWAPPER_BLOCK_SIZE ), dt_virt_base,SWAPPER_BLOCK_SIZE , prot); -if (fdt_check_header (dt_virt) !=0 ) +if (fdt_magic (dt_virt) !=FDT_MAGIC )return NULL ; *size =fdt_totalsize (dt_virt);
arch/arm64/mm/proc.S +11 -0
@@ -100,7 +100,16 @@ ENTRY(cpu_do_resume) msr tcr_el1, x8 msr vbar_el1, x9 + + /* + * __cpu_setup() cleared MDSCR_EL1.MDE and friends, before unmasking + * debug exceptions. By restoring MDSCR_EL1 here, we may take a debug + * exception. Mask them until local_dbg_restore() in cpu_suspend() + * resets them. + */ + disable_dbg msr mdscr_el1, x10 + msr sctlr_el1, x12 /* * Restore oslsr_el1 by writing oslar_el1
@@ -180,6 +189,8 @@ ENTRY(__cpu_setup) msr cpacr_el1, x0 // Enable FP/ASIMD mov x0, #1 << 12 // Reset mdscr_el1 and disable msr mdscr_el1, x0 // access to the DCC from EL0 + isb // Unmask debug exceptions now, + enable_dbg // since this is per-cpu reset_pmuserenr_el0 x0 // Disable PMU access from EL0 /* * Memory region attributes for LPAE:
arch/avr32/include/asm/uaccess.h +10 -1
@@ -74,7 +74,7 @@ extern __kernel_size_t __copy_user(void *to, const void *from,extern __kernel_size_t copy_to_user (void __user *to,const void *from,__kernel_size_t n); -extern __kernel_size_t copy_from_user (void *to,const void __user *from, +extern __kernel_size_t ___copy_from_user (void *to,const void __user *from,__kernel_size_t n); static inline __kernel_size_t __copy_to_user(void __user *to, const void *from,
@@ -88,6 +88,15 @@ static inline __kernel_size_t __copy_from_user(void *to, {return __copy_user (to, (const void __force *)from, n); } +static inline __kernel_size_t copy_from_user (void *to, +const void __user *from, +__kernel_size_t n) +{ +size_t res =___copy_from_user (to, from, n); +if (unlikely (res)) +memset (to + (n - res),0 , res); +return res; +}#define __copy_to_user_inatomic __copy_to_user#define __copy_from_user_inatomic __copy_from_user
arch/avr32/kernel/avr32_ksyms.c +1 -1
@@ -36,7 +36,7 @@ EXPORT_SYMBOL(copy_page);/* * Userspace access stuff. */ -EXPORT_SYMBOL (copy_from_user); +EXPORT_SYMBOL (___copy_from_user);EXPORT_SYMBOL (copy_to_user);EXPORT_SYMBOL (__copy_user);EXPORT_SYMBOL (strncpy_from_user);
arch/avr32/lib/copy_user.S +4 -4
@@ -23,13 +23,13 @@ */ .text .align 1 - .global copy_from_user - .type copy_from_user, @function -copy_from_user: + .global ___copy_from_user + .type ___copy_from_user, @function +___copy_from_user: branch_if_kernel r8, __copy_user ret_if_privileged r8, r11, r10, r10 rjmp __copy_user - .size copy_from_user, . - copy_from_user + .size ___copy_from_user, . - ___copy_from_user .global copy_to_user .type copy_to_user, @function
arch/avr32/mach-at32ap/pio.c +1 -1
@@ -435,7 +435,7 @@ void __init at32_init_pio(struct platform_device *pdev)struct resource *regs;struct pio_device *pio; -if (pdev->id >MAX_NR_PIO_DEVICES ) { +if (pdev->id >=MAX_NR_PIO_DEVICES ) {dev_err (&pdev->dev,"only %d PIO devices supported\n" ,MAX_NR_PIO_DEVICES );return ;
arch/blackfin/include/asm/uaccess.h +5 -4
@@ -171,11 +171,12 @@ static inline int bad_user_access_length(void)static inline unsigned long __must_check copy_from_user (void *to,const void __user *from,unsigned long n) { -if (access_ok (VERIFY_READ , from, n)) +if (likely (access_ok (VERIFY_READ , from, n))) {memcpy (to, (const void __force *)from, n); -else -return n; -return 0 ; +return 0 ; + } +memset (to,0 , n); +return n; } static inline unsigned long __must_check
arch/blackfin/mach-bf561/boards/cm_bf561.c +2 -1
@@ -146,7 +146,8 @@ static struct platform_device hitachi_fb_device = {#include <linux/smc91x.h> static struct smc91x_platdata smc91x_info = { - .flags =SMC91X_USE_32BIT |SMC91X_NOWAIT , + .flags =SMC91X_USE_8BIT |SMC91X_USE_16BIT |SMC91X_USE_32BIT | +SMC91X_NOWAIT , .leda =RPC_LED_100_10 , .ledb =RPC_LED_TX_RX , };
arch/blackfin/mach-bf561/boards/ezkit.c +2 -1
@@ -134,7 +134,8 @@ static struct platform_device net2272_bfin_device = {#include <linux/smc91x.h> static struct smc91x_platdata smc91x_info = { - .flags =SMC91X_USE_32BIT |SMC91X_NOWAIT , + .flags =SMC91X_USE_8BIT |SMC91X_USE_16BIT |SMC91X_USE_32BIT | +SMC91X_NOWAIT , .leda =RPC_LED_100_10 , .ledb =RPC_LED_TX_RX , };
arch/cris/include/asm/uaccess.h +32 -39
102 lines not on this page · raw message
arch/frv/include/asm/uaccess.h +9 -3
@@ -263,19 +263,25 @@ do { \extern long __memset_user (void *dst,unsigned long count);extern long __memcpy_user (void *dst,const void *src,unsigned long count); -#define clear_user (dst,count) __memset_user(____force(dst), (count)) +#define __clear_user (dst,count) __memset_user(____force(dst), (count))#define __copy_from_user_inatomic (to, from, n) __memcpy_user((to), ____force(from), (n))#define __copy_to_user_inatomic (to, from, n) __memcpy_user(____force(to), (from), (n))#else -#define clear_user (dst,count) (memset(____force(dst), 0, (count)), 0) +#define __clear_user (dst,count) (memset(____force(dst), 0, (count)), 0)#define __copy_from_user_inatomic (to, from, n) (memcpy((to), ____force(from), (n)), 0)#define __copy_to_user_inatomic (to, from, n) (memcpy(____force(to), (from), (n)), 0)#endif -#define __clear_user clear_user +static inline unsigned long __must_check +clear_user (void __user *to,unsigned long n) +{ +if (likely (__access_ok (to, n))) + n =__clear_user (to, n); +return n; +}static inline unsigned long __must_check __copy_to_user (void __user *to,const void *from,unsigned long n)
arch/hexagon/include/asm/uaccess.h +2 -1
@@ -103,7 +103,8 @@ static inline long hexagon_strncpy_from_user(char *dst, const char __user *src, {long res =__strnlen_user (src, n); -/* return from strnlen can't be zero -- that would be rubbish. */ +if (unlikely (!res)) +return -EFAULT ;if (res > n) {copy_from_user (dst, src, n);
arch/ia64/include/asm/uaccess.h +9 -11
@@ -263,17 +263,15 @@ __copy_from_user (void *to, const void __user *from, unsigned long count) __cu_len; \ }) -#define copy_from_user (to, from, n) \ -({ \ - void *__cu_to = (to); \ - const void __user *__cu_from = (from); \ - long __cu_len = (n); \ - \ - __chk_user_ptr(__cu_from); \ - if (__access_ok(__cu_from, __cu_len, get_fs())) \ - __cu_len = __copy_user((__force void __user *) __cu_to, __cu_from, __cu_len); \ - __cu_len; \ -}) +static inline unsigned long +copy_from_user (void *to,const void __user *from,unsigned long n) +{ +if (likely (__access_ok (from, n,get_fs ()))) + n =__copy_user ((__force void __user *) to, from, n); +else +memset (to,0 , n); +return n; +}#define __copy_in_user (to, from, size) __copy_user((to), (from), (size))
arch/m32r/include/asm/uaccess.h +1 -1
@@ -219,7 +219,7 @@ extern int fixup_exception(struct pt_regs *regs);#define __get_user_nocheck (x, ptr, size) \ ({ \ long __gu_err = 0; \ - unsigned long __gu_val; \ + unsigned long __gu_val = 0; \ might_fault(); \ __get_user_size(__gu_val, (ptr), (size), __gu_err); \ (x) = (__force __typeof__(*(ptr)))__gu_val; \
arch/metag/include/asm/cmpxchg_lnkget.h +1 -1
@@ -73,7 +73,7 @@ static inline unsigned long __cmpxchg_u32(volatile int *m, unsigned long old, " DCACHE [%2], %0\n" #endif "2:\n" - : "=&d" (temp), "=&da" (retval) + : "=&d" (temp), "=&d" (retval) : "da" (m), "bd" (old), "da" (new) : "cc" );
arch/metag/include/asm/uaccess.h +2 -1
@@ -204,8 +204,9 @@ extern unsigned long __must_check __copy_user_zeroing(void *to,static inline unsigned long copy_from_user (void *to,const void __user *from,unsigned long n) { -if (access_ok (VERIFY_READ , from, n)) +if (likely (access_ok (VERIFY_READ , from, n)))return __copy_user_zeroing (to, from, n); +memset (to,0 , n);return n; }
arch/microblaze/include/asm/uaccess.h +7 -4
@@ -227,7 +227,7 @@ extern long __user_bad(void);#define __get_user (x, ptr) \ ({ \ - unsigned long __gu_val; \ + unsigned long __gu_val = 0; \/*unsigned long __gu_ptr = (unsigned long)(ptr);*/ \long __gu_err; \switch (sizeof (*(ptr))) { \
@@ -373,10 +373,13 @@ extern long __user_bad(void);static inline long copy_from_user (void *to,const void __user *from,unsigned long n) { +unsigned long res = n;might_fault (); -if (access_ok (VERIFY_READ , from, n)) -return __copy_from_user (to, from, n); -return n; +if (likely (access_ok (VERIFY_READ , from, n))) + res =__copy_from_user (to, from, n); +if (unlikely (res)) +memset (to + (n - res),0 , res); +return res; }#define __copy_to_user (to, from, n) \
arch/mips/Kconfig.debug +0 -36
@@ -113,42 +113,6 @@ config SPINLOCK_TEST help Add several files to the debugfs to test spinlock speed. -if CPU_MIPSR6 - -choice - prompt "Compact branch policy" - default MIPS_COMPACT_BRANCHES_OPTIMAL - -config MIPS_COMPACT_BRANCHES_NEVER - bool "Never (force delay slot branches)" - help - Pass the -mcompact-branches=never flag to the compiler in order to - force it to always emit branches with delay slots, and make no use - of the compact branch instructions introduced by MIPSr6. This is - useful if you suspect there may be an issue with compact branches in - either the compiler or the CPU. - -config MIPS_COMPACT_BRANCHES_OPTIMAL - bool "Optimal (use where beneficial)" - help - Pass the -mcompact-branches=optimal flag to the compiler in order for - it to make use of compact branch instructions where it deems them - beneficial, and use branches with delay slots elsewhere. This is the - default compiler behaviour, and should be used unless you have a - reason to choose otherwise. - -config MIPS_COMPACT_BRANCHES_ALWAYS - bool "Always (force compact branches)" - help - Pass the -mcompact-branches=always flag to the compiler in order to - force it to always emit compact branches, making no use of branch - instructions with delay slots. This can result in more compact code - which may be beneficial in some scenarios. - -endchoice - -endif # CPU_MIPSR6 - config SCACHE_DEBUGFS bool "L2 cache debugfs entries" depends on DEBUG_FS
arch/mips/Makefile +0 -4
@@ -203,10 +203,6 @@ endif toolchain-virt := $(call cc-option-yn,$(mips-cflags) -mvirt) cflags-$(toolchain-virt) += -DTOOLCHAIN_SUPPORTS_VIRT -cflags-$(CONFIG_MIPS_COMPACT_BRANCHES_NEVER) += -mcompact-branches=never -cflags-$(CONFIG_MIPS_COMPACT_BRANCHES_OPTIMAL) += -mcompact-branches=optimal -cflags-$(CONFIG_MIPS_COMPACT_BRANCHES_ALWAYS) += -mcompact-branches=always - # # Firmware support #
arch/mips/include/asm/asmmacro.h +1 -0
@@ -157,6 +157,7 @@ ldc1 $f28, THREAD_FPR28(\thread) ldc1 $f30, THREAD_FPR30(\thread) ctc1 \tmp, fcr31 + .set pop .endm .macro fpu_restore_16odd thread
arch/mips/include/asm/mach-paravirt/kernel-entry-init.h +2 -0
@@ -11,11 +11,13 @@#define CP0_EBASE $15, 1 .macro kernel_entry_setup +#ifdef CONFIG_SMP mfc0 t0,CP0_EBASE andi t0, t0, 0x3ff # CPUNum beqz t0, 1f # CPUs other than zero goto smp_bootstrap j smp_bootstrap +#endif /* CONFIG_SMP */ 1: .endm
arch/mips/include/asm/uaccess.h +3 -0
@@ -14,6 +14,7 @@#include <linux/kernel.h> #include <linux/errno.h> #include <linux/thread_info.h> +#include <linux/string.h> #include <asm/asm-eva.h> /*
@@ -1170,6 +1171,8 @@ extern size_t __copy_in_user_eva(void *__to, const void *__from, size_t __n); __cu_len =__invoke_copy_from_user (__cu_to, \ __cu_from, \ __cu_len); \ + }else { \ +memset (__cu_to,0 , __cu_len); \ } \ } \ __cu_len; \
arch/mips/include/asm/uprobes.h +0 -1
@@ -36,7 +36,6 @@ struct arch_uprobe {unsigned long resume_epc;u32 insn[2 ];u32 ixol[2 ]; -union mips_instruction orig_inst[MAX_UINSN_BYTES /4 ]; };struct arch_uprobe_task {
arch/mips/kernel/cevt-r4k.c +1 -6
@@ -276,12 +276,7 @@ int r4k_clockevent_init(void)CLOCK_EVT_FEAT_C3STOP |CLOCK_EVT_FEAT_PERCPU ; -clockevent_set_clock (cd, mips_hpt_frequency); - -/* Calculate the min / max delta */ - cd->max_delta_ns =clockevent_delta2ns (0x7fffffff , cd); min_delta =calculate_min_delta (); - cd->min_delta_ns =clockevent_delta2ns (min_delta, cd); cd->rating =300 ; cd->irq = irq;
@@ -289,7 +284,7 @@ int r4k_clockevent_init(void) cd->set_next_event = mips_next_event; cd->event_handler = mips_event_handler; -clockevents_register_device (cd); +clockevents_config_and_register (cd, mips_hpt_frequency, min_delta,0x7fffffff );if (cp0_timer_irq_installed)return 0 ;
arch/mips/kernel/csrc-r4k.c +3 -1
@@ -23,7 +23,7 @@ static struct clocksource clocksource_mips = { .flags = CLOCK_SOURCE_IS_CONTINUOUS, }; -static u64 notrace r4k_read_sched_clock(void) +static u64 __maybe_unused notrace r4k_read_sched_clock(void) {return read_c0_count (); }
@@ -82,7 +82,9 @@ int __init init_r4k_clocksource(void)clocksource_register_hz (&clocksource_mips, mips_hpt_frequency); +#ifndef CONFIG_CPU_FREQ sched_clock_register (r4k_read_sched_clock,32 , mips_hpt_frequency); +#endif return 0 ; }
arch/mips/kernel/mips-r2-to-r6-emul.c +2 -0
@@ -1164,7 +1164,9 @@ fpu_emul: regs->regs[31 ] = r31; regs->cp0_epc = epc;if (!used_math ()) {/* First time FPU user. */ +preempt_disable (); err =init_fpu (); +preempt_enable ();set_used_math (); }lose_fpu (1 );/* Save FPU state for the emulator. */
arch/mips/kernel/process.c +4 -4
@@ -591,14 +591,14 @@ int mips_set_process_fp_mode(struct task_struct *task, unsigned int value)return -EOPNOTSUPP ;/* Avoid inadvertently triggering emulation */ -if ((value &PR_FP_MODE_FR ) && cpu_has_fpu && - !(current_cpu_data.fpu_id &MIPS_FPIR_F64 )) +if ((value &PR_FP_MODE_FR ) && raw_cpu_has_fpu && + !(raw_current_cpu_data.fpu_id &MIPS_FPIR_F64 ))return -EOPNOTSUPP ; -if ((value &PR_FP_MODE_FRE ) && cpu_has_fpu && !cpu_has_fre) +if ((value &PR_FP_MODE_FRE ) && raw_cpu_has_fpu && !cpu_has_fre)return -EOPNOTSUPP ;/* FR = 0 not supported in MIPS R6 */ -if (!(value &PR_FP_MODE_FR ) && cpu_has_fpu && cpu_has_mips_r6) +if (!(value &PR_FP_MODE_FR ) && raw_cpu_has_fpu && cpu_has_mips_r6)return -EOPNOTSUPP ;/* Proceed with the mode switch */
arch/mips/kernel/scall64-n32.S +1 -1
@@ -348,7 +348,7 @@ EXPORT(sysn32_call_table) PTR sys_ni_syscall /* available, was setaltroot */ PTR sys_add_key PTR sys_request_key - PTR sys_keyctl /* 6245 */ + PTR compat_sys_keyctl /* 6245 */ PTR sys_set_thread_area PTR sys_inotify_init PTR sys_inotify_add_watch
arch/mips/kernel/scall64-o32.S +1 -1
@@ -504,7 +504,7 @@ EXPORT(sys32_call_table) PTR sys_ni_syscall /* available, was setaltroot */ PTR sys_add_key /* 4280 */ PTR sys_request_key - PTR sys_keyctl + PTR compat_sys_keyctl PTR sys_set_thread_area PTR sys_inotify_init PTR sys_inotify_add_watch /* 4285 */
arch/mips/kernel/smp.c +3 -4
@@ -320,6 +320,9 @@ asmlinkage void start_secondary(void)cpumask_set_cpu (cpu, &cpu_coherent_mask);notify_cpu_starting (cpu); +cpumask_set_cpu (cpu, &cpu_callin_map); +synchronise_count_slave (cpu); +set_cpu_online (cpu, true);set_cpu_sibling_map (cpu);
@@ -327,10 +330,6 @@ asmlinkage void start_secondary(void)calculate_cpu_foreign_map (); -cpumask_set_cpu (cpu, &cpu_callin_map); - -synchronise_count_slave (cpu); -/* * irq will be enabled in ->smp_finish(), enabling it too early * is dangerous.
arch/mips/kernel/uprobes.c +3 -22
@@ -157,7 +157,6 @@ bool is_trap_insn(uprobe_opcode_t *insn)int arch_uprobe_pre_xol (struct arch_uprobe *aup,struct pt_regs *regs) {struct uprobe_task *utask = current->utask; -union mips_instruction insn;/* * Now find the EPC where to resume after the breakpoint has been
@@ -168,10 +167,10 @@ int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs)unsigned long epc; epc = regs->cp0_epc; -__compute_return_epc_for_insn (regs, insn); +__compute_return_epc_for_insn (regs, + (union mips_instruction ) aup->insn[0 ]); aup->resume_epc = regs->cp0_epc; } - utask->autask.saved_trap_nr = current->thread.trap_nr; current->thread.trap_nr =UPROBE_TRAP_NR ; regs->cp0_epc = current->utask->xol_vaddr;
@@ -257,7 +256,7 @@ unsigned long arch_uretprobe_hijack_return_addr( ra = regs->regs[31 ];/* Replace the return address with the trampoline address */ - regs->regs[31 ] = ra; + regs->regs[31 ] = trampoline_vaddr;return ra; }
@@ -280,24 +279,6 @@ int __weak set_swbp(struct arch_uprobe *auprobe, struct mm_struct *mm,return uprobe_write_opcode (mm, vaddr,UPROBE_SWBP_INSN ); } -/** -* set_orig_insn - Restore the original instruction. -* @mm: the probed process address space. -* @auprobe: arch specific probepoint information. -* @vaddr: the virtual address to insert the opcode. -* -* For mm @mm, restore the original opcode (opcode) at @vaddr. -* Return 0 (success) or a negative errno. -* -* This overrides the weak version in kernel/events/uprobes.c. -*/ -int set_orig_insn (struct arch_uprobe *auprobe,struct mm_struct *mm, -unsigned long vaddr) -{ -return uprobe_write_opcode (mm, vaddr, - *(uprobe_opcode_t *)&auprobe->orig_inst[0 ].word); -} -void __weak arch_uprobe_copy_ixol (struct page *page,unsigned long vaddr,void *src,unsigned long len) {
arch/mips/kernel/vdso.c +4 -4
@@ -39,16 +39,16 @@ static struct vm_special_mapping vdso_vvar_mapping = {static void __init init_vdso_image (struct mips_vdso_image *image) {unsigned long num_pages, i; +unsigned long data_pfn;BUG_ON (!PAGE_ALIGNED (image->data));BUG_ON (!PAGE_ALIGNED (image->size)); num_pages = image->size /PAGE_SIZE ; -for (i =0 ; i < num_pages; i++) { - image->mapping.pages[i] = -virt_to_page (image->data + (i *PAGE_SIZE )); - } + data_pfn =__phys_to_pfn (__pa_symbol (image->data)); +for (i =0 ; i < num_pages; i++) + image->mapping.pages[i] =pfn_to_page (data_pfn + i); }static int __init init_vdso (void )
arch/mips/kvm/emulate.c +81 -22
153 lines not on this page · raw message
arch/mips/kvm/tlb.c +44 -24
103 lines not on this page · raw message
arch/mips/loongson64/loongson-3/hpet.c +7 -7
@@ -13,8 +13,8 @@#define SMBUS_PCI_REG64 0x64#define SMBUS_PCI_REGB4 0xb4 -#define HPET_MIN_CYCLES 64 -#define HPET_MIN_PROG_DELTA (HPET_MIN_CYCLES + (HPET_MIN_CYCLES >> 1)) +#define HPET_MIN_CYCLES 16 +#define HPET_MIN_PROG_DELTA (HPET_MIN_CYCLES * 12)static DEFINE_SPINLOCK (hpet_lock); DEFINE_PER_CPU(struct clock_event_device, hpet_clockevent_device);
@@ -157,14 +157,14 @@ static int hpet_tick_resume(struct clock_event_device *evt)static int hpet_next_event (unsigned long delta,struct clock_event_device *evt) { -unsigned int cnt; -int res; +u32 cnt; +s32 res; cnt =hpet_read (HPET_COUNTER ); - cnt += delta; + cnt += (u32 ) delta;hpet_write (HPET_T0_CMP , cnt); - res = (int )(cnt -hpet_read (HPET_COUNTER )); + res = (s32)(cnt -hpet_read (HPET_COUNTER ));return res <HPET_MIN_CYCLES ? -ETIME :0 ; }
@@ -230,7 +230,7 @@ void __init setup_hpet_timer(void) cd = &per_cpu (hpet_clockevent_device, cpu); cd->name ="hpet" ; - cd->rating =320 ; + cd->rating =100 ; cd->features =CLOCK_EVT_FEAT_PERIODIC |CLOCK_EVT_FEAT_ONESHOT ; cd->set_state_shutdown = hpet_set_state_shutdown; cd->set_state_periodic = hpet_set_state_periodic;
arch/mips/mm/uasm-mips.c +1 -1
@@ -65,7 +65,7 @@ static struct insn insn_table[] = { #ifndef CONFIG_CPU_MIPSR6 { insn_cache, M(cache_op, 0, 0, 0, 0, 0), RS | RT | SIMM }, #else - { insn_cache, M6(cache_op, 0, 0, 0, cache6_op), RS | RT | SIMM9 }, + { insn_cache, M6(spec3_op, 0, 0, 0, cache6_op), RS | RT | SIMM9 }, #endif { insn_daddiu, M(daddiu_op, 0, 0, 0, 0, 0), RS | RT | SIMM }, { insn_daddu, M(spec_op, 0, 0, 0, 0, daddu_op), RS | RT | RD },
arch/mips/mti-malta/malta-setup.c +7 -1
@@ -39,6 +39,9 @@#include <linux/console.h> #endif +#define ROCIT_CONFIG_GEN0 0x1f403000 +#define ROCIT_CONFIG_GEN0_PCI_IOCU BIT(7) +extern void malta_be_init (void );extern int malta_be_handler (struct pt_regs *regs,int is_fixup);
@@ -107,6 +110,8 @@ static void __init fd_activate(void)static int __init plat_enable_iocoherency (void ) {int supported =0 ; +u32 cfg; +if (mips_revision_sconid ==MIPS_REVISION_SCON_BONITO ) {if (BONITO_PCICACHECTRL &BONITO_PCICACHECTRL_CPUCOH_PRES ) {BONITO_PCICACHECTRL |=BONITO_PCICACHECTRL_CPUCOH_EN ;
@@ -129,7 +134,8 @@ static int __init plat_enable_iocoherency(void) }else if (mips_cm_numiocu () !=0 ) {/* Nothing special needs to be done to enable coherency */ pr_info ("CMP IOCU detected\n" ); -if ((*(unsigned int *)0xbf403000 &0x81 ) !=0x81 ) { + cfg =__raw_readl ((u32 *)CKSEG1ADDR (ROCIT_CONFIG_GEN0 )); +if (!(cfg &ROCIT_CONFIG_GEN0_PCI_IOCU )) {pr_crit ("IOCU OPERATION DISABLED BY SWITCH - DEFAULTING TO SW IO COHERENCY\n" );return 0 ; }
arch/mn10300/include/asm/uaccess.h +1 -0
@@ -166,6 +166,7 @@ struct __large_struct { unsigned long buf[100]; };"2:\n" \" .section .fixup,\"ax\"\n" \"3:\n\t" \ +" mov 0,%1\n" \" mov %3,%0\n" \" jmp 2b\n" \" .previous\n" \
arch/mn10300/lib/usercopy.c +3 -1
@@ -9,7 +9,7 @@* as published by the Free Software Foundation; either version * 2 of the Licence, or (at your option) any later version. */ -#include <asm/uaccess.h> +#include <linux/uaccess.h> unsigned long __generic_copy_to_user (void *to,const void *from,unsigned long n)
@@ -24,6 +24,8 @@ __generic_copy_from_user(void *to, const void *from, unsigned long n) {if (access_ok (VERIFY_READ , from, n))__copy_user_zeroing (to, from, n); +else +memset (to,0 , n);return n; }
arch/nios2/include/asm/uaccess.h +8 -5
@@ -102,9 +102,12 @@ extern long __copy_to_user(void __user *to, const void *from, unsigned long n);static inline long copy_from_user (void *to,const void __user *from,unsigned long n) { -if (!access_ok (VERIFY_READ , from, n)) -return n; -return __copy_from_user (to, from, n); +unsigned long res = n; +if (access_ok (VERIFY_READ , from, n)) + res =__copy_from_user (to, from, n); +if (unlikely (res)) +memset (to + (n - res),0 , res); +return res; } static inline long copy_to_user(void __user *to, const void *from,
@@ -139,7 +142,7 @@ extern long strnlen_user(const char __user *s, long n);#define __get_user_unknown (val, size, ptr, err) do { \ err = 0; \ - if (copy_from_user(&(val), ptr, size)) { \ + if (__copy_from_user(&(val), ptr, size)) { \ err = -EFAULT; \ } \ } while (0)
@@ -166,7 +169,7 @@ do { \ ({ \ long __gu_err = -EFAULT; \ const __typeof__(*(ptr)) __user *__gu_ptr = (ptr); \ - unsigned long __gu_val; \ + unsigned long __gu_val = 0; \ __get_user_common(__gu_val, sizeof(*(ptr)), __gu_ptr, __gu_err);\ (x) = (__force __typeof__(x))__gu_val; \ __gu_err; \
arch/openrisc/include/asm/uaccess.h +11 -24
@@ -273,28 +273,20 @@ __copy_tofrom_user(void *to, const void *from, unsigned long size);static inline unsigned long copy_from_user (void *to,const void *from,unsigned long n) { -unsigned long over; - -if (access_ok (VERIFY_READ , from, n)) -return __copy_tofrom_user (to, from, n); -if ((unsigned long )from <TASK_SIZE ) { - over = (unsigned long )from + n -TASK_SIZE ; -return __copy_tofrom_user (to, from, n - over) + over; - } -return n; +unsigned long res = n; + +if (likely (access_ok (VERIFY_READ , from, n))) + res =__copy_tofrom_user (to, from, n); +if (unlikely (res)) +memset (to + (n - res),0 , res); +return res; }static inline unsigned long copy_to_user (void *to,const void *from,unsigned long n) { -unsigned long over; - -if (access_ok (VERIFY_WRITE , to, n)) -return __copy_tofrom_user (to, from, n); -if ((unsigned long )to <TASK_SIZE ) { - over = (unsigned long )to + n -TASK_SIZE ; -return __copy_tofrom_user (to, from, n - over) + over; - } +if (likely (access_ok (VERIFY_WRITE , to, n))) + n =__copy_tofrom_user (to, from, n);return n; }
@@ -303,13 +295,8 @@ extern unsigned long __clear_user(void *addr, unsigned long size);static inline __must_check unsigned long clear_user (void *addr,unsigned long size) { - -if (access_ok (VERIFY_WRITE , addr, size)) -return __clear_user (addr, size); -if ((unsigned long )addr <TASK_SIZE ) { -unsigned long over = (unsigned long )addr + size -TASK_SIZE ; -return __clear_user (addr, size - over) + over; - } +if (likely (access_ok (VERIFY_WRITE , addr, size))) + size =__clear_user (addr, size);return size; }
arch/parisc/include/asm/uaccess.h +4 -2
@@ -10,6 +10,7 @@#include <asm-generic/uaccess-unaligned.h> #include <linux/bug.h> +#include <linux/string.h> #define VERIFY_READ 0#define VERIFY_WRITE 1
@@ -221,13 +222,14 @@ static inline unsigned long __must_check copy_from_user(void *to, unsigned long n) {int sz =__compiletime_object_size (to); -int ret = -EFAULT ; +unsigned long ret = n;if (likely (sz ==-1 || !__builtin_constant_p (n) || sz >= n)) ret =__copy_from_user (to, from, n);else copy_from_user_overflow (); - +if (unlikely (ret)) +memset (to + (n - ret),0 , ret);return ret; }
arch/parisc/include/uapi/asm/errno.h +2 -2
@@ -97,10 +97,10 @@#define ENOTCONN 235/* Transport endpoint is not connected */ #define ESHUTDOWN 236/* Cannot send after transport endpoint shutdown */ #define ETOOMANYREFS 237/* Too many references: cannot splice */ -#define EREFUSED ECONNREFUSED/* for HP's NFS apparently */ #define ETIMEDOUT 238/* Connection timed out */ #define ECONNREFUSED 239/* Connection refused */ -#define EREMOTERELEASE 240/* Remote peer released connection */ +#define EREFUSED ECONNREFUSED/* for HP's NFS apparently */ +#define EREMOTERELEASE 240/* Remote peer released connection */ #define EHOSTDOWN 241/* Host is down */ #define EHOSTUNREACH 242/* No route to host */
arch/parisc/kernel/processor.c +0 -8
@@ -51,8 +51,6 @@ EXPORT_SYMBOL(_parisc_requires_coherency); DEFINE_PER_CPU(struct cpuinfo_parisc, cpu_data); -extern int update_cr16_clocksource (void );/* from time.c */ -/* ** PARISC CPU driver - claim "device" and initialize CPU data structures. **
@@ -228,12 +226,6 @@ static int processor_probe(struct parisc_device *dev) }#endif -/* If we've registered more than one cpu, -* we'll use the jiffies clocksource since cr16 -* is not synchronized between CPUs. -*/ -update_cr16_clocksource (); -return 0 ; }
arch/parisc/kernel/time.c +0 -12
@@ -220,18 +220,6 @@ static struct clocksource clocksource_cr16 = { .flags = CLOCK_SOURCE_IS_CONTINUOUS, }; -int update_cr16_clocksource (void ) -{ -/* since the cr16 cycle counters are not synchronized across CPUs, -we'll check if we should switch to a safe clocksource: */ -if (clocksource_cr16.rating !=0 &&num_online_cpus () >1 ) { -clocksource_change_rating (&clocksource_cr16,0 ); -return 1 ; - } - -return 0 ; -} -void __init start_cpu_itimer (void ) {unsigned int cpu =smp_processor_id ();
arch/powerpc/include/asm/pci-bridge.h +1 -0
@@ -299,6 +299,7 @@ extern void pci_process_bridge_OF_ranges(struct pci_controller *hose,/* Allocate & free a PCI host bridge structure */ extern struct pci_controller *pcibios_alloc_controller (struct device_node *dev);extern void pcibios_free_controller (struct pci_controller *phb); +extern void pcibios_free_controller_deferred (struct pci_host_bridge *bridge);#ifdef CONFIG_PCI extern int pcibios_vaddr_is_ioport (void __iomem *address);
arch/powerpc/include/asm/reg.h +1 -0
@@ -718,6 +718,7 @@#define MMCR0_FCHV 0x00000001UL/* freeze conditions in hypervisor mode */ #define SPRN_MMCR1 798#define SPRN_MMCR2 785 +#define SPRN_UMMCR2 769#define SPRN_MMCRA 0x312#define MMCRA_SDSYNC 0x80000000UL/* SDAR synced with SIAR */ #define MMCRA_SDAR_DCACHE_MISS 0x40000000UL
arch/powerpc/include/asm/uaccess.h +2 -19
@@ -308,30 +308,17 @@ extern unsigned long __copy_tofrom_user(void __user *to,static inline unsigned long copy_from_user (void *to,const void __user *from,unsigned long n) { -unsigned long over; - -if (access_ok (VERIFY_READ , from, n)) +if (likely (access_ok (VERIFY_READ , from, n)))return __copy_tofrom_user ((__force void __user *)to, from, n); -if ((unsigned long )from <TASK_SIZE ) { - over = (unsigned long )from + n -TASK_SIZE ; -return __copy_tofrom_user ((__force void __user *)to, from, - n - over) + over; - } +memset (to,0 , n);return n; }static inline unsigned long copy_to_user (void __user *to,const void *from,unsigned long n) { -unsigned long over; -if (access_ok (VERIFY_WRITE , to, n))return __copy_tofrom_user (to, (__force void __user *)from, n); -if ((unsigned long )to <TASK_SIZE ) { - over = (unsigned long )to + n -TASK_SIZE ; -return __copy_tofrom_user (to, (__force void __user *)from, - n - over) + over; - }return n; }
@@ -422,10 +409,6 @@ static inline unsigned long clear_user(void __user *addr, unsigned long size)might_fault ();if (likely (access_ok (VERIFY_WRITE , addr, size)))return __clear_user (addr, size); -if ((unsigned long )addr <TASK_SIZE ) { -unsigned long over = (unsigned long )addr + size -TASK_SIZE ; -return __clear_user (addr, size - over) + over; - }return size; }
arch/powerpc/kernel/entry_64.S +6 -6
@@ -368,13 +368,13 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR) tabort_syscall: /* Firstly we need to enable TM in the kernel */ mfmsr r10 - li r13, 1 - rldimi r10, r13, MSR_TM_LG, 63-MSR_TM_LG + li r9, 1 + rldimi r10, r9, MSR_TM_LG, 63-MSR_TM_LG mtmsrd r10, 0 /* tabort, this dooms the transaction, nothing else */ - li r13, (TM_CAUSE_SYSCALL|TM_CAUSE_PERSISTENT) - TABORT(R13) + li r9, (TM_CAUSE_SYSCALL|TM_CAUSE_PERSISTENT) + TABORT(R9) /* * Return directly to userspace. We have corrupted user register state,
@@ -382,8 +382,8 @@ tabort_syscall: * resume after the tbegin of the aborted transaction with the * checkpointed register state. */ - li r13, MSR_RI - andc r10, r10, r13 + li r9, MSR_RI + andc r10, r10, r9 mtmsrd r10, 1 mtspr SPRN_SRR0, r11 mtspr SPRN_SRR1, r12
arch/powerpc/kernel/pci-common.c +36 -0
@@ -103,6 +103,42 @@ void pcibios_free_controller(struct pci_controller *phb)EXPORT_SYMBOL_GPL (pcibios_free_controller);/* +* This function is used to call pcibios_free_controller() +* in a deferred manner: a callback from the PCI subsystem. +* +* _*DO NOT*_ call pcibios_free_controller() explicitly if +* this is used (or it may access an invalid *phb pointer). +* +* The callback occurs when all references to the root bus +* are dropped (e.g., child buses/devices and their users). +* +* It's called as .release_fn() of 'struct pci_host_bridge' +* which is associated with the 'struct pci_controller.bus' +* (root bus) - it expects .release_data to hold a pointer +* to 'struct pci_controller'. +* +* In order to use it, register .release_fn()/release_data +* like this: +* +* pci_set_host_bridge_release(bridge, +* pcibios_free_controller_deferred +* (void *) phb); +* +* e.g. in the pcibios_root_bridge_prepare() callback from +* pci_create_root_bus(). +*/ +void pcibios_free_controller_deferred (struct pci_host_bridge *bridge) +{ +struct pci_controller *phb = (struct pci_controller *) + bridge->release_data; + +pr_debug ("domain %d, dynamic %d\n" , phb->global_number, phb->is_dynamic); + +pcibios_free_controller (phb); +} +EXPORT_SYMBOL_GPL (pcibios_free_controller_deferred); + +/* * The function is used to return the minimal alignment * for memory or I/O windows of the associated P2P bridge. * By default, 4KiB alignment for I/O windows and 1MiB for
arch/powerpc/kernel/prom_init.c +6 -3
@@ -695,7 +695,7 @@ unsigned char ibm_architecture_vec[] = {OV4_MIN_ENT_CAP ,/* minimum VP entitled capacity */ /* option vector 5: PAPR/OF options */ -VECTOR_LENGTH (18 ),/* length */ +VECTOR_LENGTH (21 ),/* length */ 0 ,/* don't ignore, don't halt */ OV5_FEAT (OV5_LPAR ) |OV5_FEAT (OV5_SPLPAR ) |OV5_FEAT (OV5_LARGE_PAGES ) | OV5_FEAT(OV5_DRCONF_MEMORY) | OV5_FEAT(OV5_DONATE_DEDICATE_CPU) |
@@ -726,8 +726,11 @@ unsigned char ibm_architecture_vec[] = {0 ,0 ,OV5_FEAT (OV5_PFO_HW_RNG ) |OV5_FEAT (OV5_PFO_HW_ENCR ) | -OV5_FEAT (OV5_PFO_HW_842 ), -OV5_FEAT (OV5_SUB_PROCESSORS ), +OV5_FEAT (OV5_PFO_HW_842 ),/* Byte 17 */ +0 ,/* Byte 18 */ +0 ,/* Byte 19 */ +0 ,/* Byte 20 */ +OV5_FEAT (OV5_SUB_PROCESSORS ),/* Byte 21 */ /* option vector 6: IBM PAPR hints */ VECTOR_LENGTH(3), /* length */
arch/powerpc/kernel/tm.S +1 -2
@@ -338,8 +338,6 @@ _GLOBAL(__tm_recheckpoint) */ subi r7, r7, STACK_FRAME_OVERHEAD - SET_SCRATCH0(r1) - mfmsr r6 /* R4 = original MSR to indicate whether thread used FP/Vector etc. */
@@ -468,6 +466,7 @@ restore_gprs: * until we turn MSR RI back on. */ + SET_SCRATCH0(r1) ld r5, -8(r1) ld r1, -16(r1)
arch/powerpc/kvm/book3s_emulate.c +2 -0
@@ -498,6 +498,7 @@ int kvmppc_core_emulate_mtspr_pr(struct kvm_vcpu *vcpu, int sprn, ulong spr_val)case SPRN_MMCR0 :case SPRN_MMCR1 :case SPRN_MMCR2 : +case SPRN_UMMCR2 :#endif break ; unprivileged:
@@ -640,6 +641,7 @@ int kvmppc_core_emulate_mfspr_pr(struct kvm_vcpu *vcpu, int sprn, ulong *spr_valcase SPRN_MMCR0 :case SPRN_MMCR1 :case SPRN_MMCR2 : +case SPRN_UMMCR2 :case SPRN_TIR :#endif *spr_val =0 ;
arch/powerpc/kvm/book3s_hv_rmhandlers.S +250 -212
108 lines not on this page · raw message
arch/powerpc/platforms/powernv/opal-dump.c +6 -1
Lines of this file are not shown. View the raw message.
arch/powerpc/platforms/powernv/opal-elog.c +6 -1
Lines of this file are not shown. View the raw message.
arch/powerpc/platforms/powernv/pci-ioda.c +2 -1
Lines of this file are not shown. View the raw message.
arch/powerpc/platforms/pseries/pci_dlpar.c +5 -2
Lines of this file are not shown. View the raw message.
arch/score/include/asm/uaccess.h +24 -22
46 lines not on this page · raw message
arch/unicore32/include/asm/mmu_context.h +1 -1
Lines of this file are not shown. View the raw message.
arch/x86/boot/compressed/eboot.c +69 -65
134 lines not on this page · raw message
arch/x86/kvm/x86.c +29 -16
45 lines not on this page · raw message
crypto/echainiv.c +24 -91
115 lines not on this page · raw message
drivers/acpi/ec.c +37 -4
41 lines not on this page · raw message
drivers/base/regmap/regcache-rbtree.c +28 -10
Lines of this file are not shown. View the raw message.
drivers/char/random.c +30 -16
46 lines not on this page · raw message
drivers/char/tpm/tpm-interface.c +28 -23
51 lines not on this page · raw message
drivers/char/tpm/tpm2-cmd.c +66 -37
103 lines not on this page · raw message
drivers/char/tpm/tpm_crb.c +45 -22
67 lines not on this page · raw message
drivers/clk/mvebu/cp110-system-controller.c +22 -9
Lines of this file are not shown. View the raw message.
drivers/crypto/caam/caamalg.c +45 -45
90 lines not on this page · raw message
drivers/crypto/qat/qat_common/qat_algs.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/firmware/efi/libstub/efi-stub-helper.c +139 -30
169 lines not on this page · raw message
drivers/firmware/efi/libstub/fdt.c +39 -15
54 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c +21 -17
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +16 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +10 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/atombios_encoders.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/powerplay/hwmgr/ppatomctrl.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/intel_ddi.c +65 -26
91 lines not on this page · raw message
drivers/gpu/drm/i915/intel_hotplug.c +105 -12
117 lines not on this page · raw message
drivers/gpu/drm/i915/intel_ringbuffer.c +14 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/intel_runtime_pm.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv04.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv30.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv34.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/radeon/atombios_encoders.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/radeon/radeon_atombios.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/radeon/radeon_atpx_handler.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/radeon/radeon_connectors.c +9 -6
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/rockchip/rockchip_drm_vop.c +12 -1
Lines of this file are not shown. View the raw message.
drivers/i2c/busses/i2c-cros-ec-tunnel.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/iio/common/hid-sensors/hid-sensor-attributes.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/infiniband/core/uverbs_main.c +24 -13
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/i40iw/i40iw_cm.c +3 -23
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/i40iw/i40iw_main.c +7 -5
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/i40iw/i40iw_utils.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/i40iw/i40iw_verbs.c +1 -3
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/qib/qib_debugfs.c +9 -3
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/ipoib/ipoib_cm.c +16 -0
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/ipoib/ipoib_ib.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/ipoib/ipoib_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/input/mouse/elan_i2c_core.c +63 -16
79 lines not on this page · raw message
drivers/irqchip/irq-mips-gic.c +61 -56
117 lines not on this page · raw message
drivers/media/dvb-core/dvb_ringbuffer.c +61 -13
74 lines not on this page · raw message
drivers/media/platform/s5p-mfc/s5p_mfc.c +11 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/vsp1/vsp1_pipe.c +9 -5
Lines of this file are not shown. View the raw message.
drivers/media/v4l2-core/videobuf2-core.c +6 -4
Lines of this file are not shown. View the raw message.
drivers/media/v4l2-core/videobuf2-v4l2.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/mfd/qcom_rpm.c +41 -14
55 lines not on this page · raw message
drivers/mmc/host/sdhci-tegra.c +29 -20
49 lines not on this page · raw message
drivers/net/ethernet/broadcom/bnxt/bnxt.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cavium/thunder/nic_reg.h +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_common.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_main.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igb/igb_ptp.c +23 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +13 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/cmd.c +54 -31
85 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +15 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/main.c +29 -30
59 lines not on this page · raw message
drivers/net/ethernet/qlogic/qed/qed_spq.c +3 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/smsc/smc91x.h +45 -20
65 lines not on this page · raw message
drivers/net/wireless/ath/ath10k/htt_rx.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/carl9170/debug.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/b43/debugfs.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/b43legacy/debugfs.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +7 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c +8 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c +17 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmsmac/dma.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmsmac/stf.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlegacy/3945.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/fw-dbg.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/fw.c +8 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/nvm.c +21 -20
41 lines not on this page · raw message
drivers/net/wireless/intel/iwlwifi/mvm/sf.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/sta.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/tx.c +24 -26
50 lines not on this page · raw message
drivers/net/wireless/intel/iwlwifi/pcie/drv.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/internal.h +19 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/rx.c +9 -7
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/trans.c +4 -9
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/tx.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/uap_txrx.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/of/base.c +23 -18
41 lines not on this page · raw message
drivers/pinctrl/intel/pinctrl-cherryview.c +44 -36
80 lines not on this page · raw message
drivers/pinctrl/sunxi/pinctrl-sun8i-a23.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/pinctrl/uniphier/pinctrl-uniphier-core.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/platform/chrome/cros_ec_proto.c +17 -0
Lines of this file are not shown. View the raw message.
drivers/regulator/qcom_smd-regulator.c +16 -14
Lines of this file are not shown. View the raw message.
drivers/regulator/qcom_spmi-regulator.c +5 -2
Lines of this file are not shown. View the raw message.
drivers/scsi/megaraid/megaraid_sas_base.c +9 -3
Lines of this file are not shown. View the raw message.
drivers/scsi/megaraid/megaraid_sas_fusion.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/comedi/drivers/adv_pci1760.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/staging/comedi/drivers/comedi_test.c +12 -34
46 lines not on this page · raw message
drivers/staging/comedi/drivers/daqboard2000.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/comedi/drivers/ni_mio_common.c +10 -2
Lines of this file are not shown. View the raw message.
drivers/staging/lustre/lustre/llite/namei.c +24 -19
43 lines not on this page · raw message
drivers/target/iscsi/iscsi_target_login.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/target/target_core_transport.c +43 -35
78 lines not on this page · raw message
drivers/tty/serial/8250/8250_pci.c +139 -0
139 lines not on this page · raw message
drivers/usb/core/config.c +80 -14
94 lines not on this page · raw message
drivers/usb/dwc3/gadget.c +44 -17
61 lines not on this page · raw message
drivers/usb/gadget/udc/atmel_usba_udc.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/usb/renesas_usbhs/mod_gadget.c +14 -4
Lines of this file are not shown. View the raw message.
drivers/vfio/pci/vfio_pci_intrs.c +49 -36
85 lines not on this page · raw message
drivers/xen/xenbus/xenbus_dev_frontend.c +1 -1
Lines of this file are not shown. View the raw message.
fs/autofs4/expire.c +42 -13
55 lines not on this page · raw message
fs/btrfs/extent_io.c +46 -24
70 lines not on this page · raw message
fs/cifs/connect.c +52 -1
53 lines not on this page · raw message
fs/cifs/dir.c +39 -5
44 lines not on this page · raw message
fs/ext4/inode.c +68 -31
99 lines not on this page · raw message
fs/ext4/super.c +43 -10
53 lines not on this page · raw message
fs/ext4/xattr.c +38 -28
66 lines not on this page · raw message
fs/fuse/dir.c +55 -4
59 lines not on this page · raw message
fs/nfs/flexfilelayout/flexfilelayout.c +23 -25
48 lines not on this page · raw message
fs/nfs/flexfilelayout/flexfilelayoutdev.c +10 -9
Lines of this file are not shown. View the raw message.
fs/nfs/nfs4proc.c +41 -31
72 lines not on this page · raw message
fs/nfsd/nfs4state.c +65 -40
105 lines not on this page · raw message
fs/overlayfs/readdir.c +62 -1
63 lines not on this page · raw message
include/trace/events/sunrpc.h +34 -13
47 lines not on this page · raw message
kernel/auditsc.c +164 -168
332 lines not on this page · raw message
kernel/capability.c +36 -10
46 lines not on this page · raw message
kernel/cgroup.c +39 -14
53 lines not on this page · raw message
kernel/events/core.c +49 -13
62 lines not on this page · raw message
kernel/sysctl.c +43 -2
45 lines not on this page · raw message
mm/memcontrol.c +78 -21
99 lines not on this page · raw message
mm/page_alloc.c +2 -48
50 lines not on this page · raw message
net/core/filter.c +18 -52
70 lines not on this page · raw message
net/sunrpc/xprtrdma/frwr_ops.c +42 -43
85 lines not on this page · raw message
net/unix/af_unix.c +49 -62
111 lines not on this page · raw message
security/keys/encrypted-keys/encrypted.c +7 -4
Lines of this file are not shown. View the raw message.
sound/firewire/fireworks/fireworks_hwdep.c +52 -19
71 lines not on this page · raw message
sound/firewire/fireworks/fireworks_proc.c +2 -2
Lines of this file are not shown. View the raw message.
sound/firewire/fireworks/fireworks_transaction.c +2 -3
Lines of this file are not shown. View the raw message.
sound/pci/hda/patch_realtek.c +60 -0
60 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.