summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony G. Basile <blueness@gentoo.org>2016-11-20 14:09:22 -0500
committerAnthony G. Basile <blueness@gentoo.org>2016-11-20 14:09:22 -0500
commit06bccc54d288ee41195dedf6a842ba7cba2d55b9 (patch)
tree18786a9a310121ef757c7131c0c53782ff2dd8da
parentgrsecurity-3.1-4.8.9-201611192033 (diff)
downloadhardened-patchset-06bccc54d288ee41195dedf6a842ba7cba2d55b9.tar.gz
hardened-patchset-06bccc54d288ee41195dedf6a842ba7cba2d55b9.tar.bz2
hardened-patchset-06bccc54d288ee41195dedf6a842ba7cba2d55b9.zip
Fix 4.8.9/1008_linux-4.8.9.patch20161119
-rw-r--r--4.8.9/1008_linux-4.8.9.patch2765
1 files changed, 1383 insertions, 1382 deletions
diff --git a/4.8.9/1008_linux-4.8.9.patch b/4.8.9/1008_linux-4.8.9.patch
index c526740..2f909eb 100644
--- a/4.8.9/1008_linux-4.8.9.patch
+++ b/4.8.9/1008_linux-4.8.9.patch
@@ -1,104 +1,104 @@
diff --git a/Makefile b/Makefile
-index c1519ab..8f18daa 100644
+index 8f18daa..c1519ab 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
VERSION = 4
PATCHLEVEL = 8
--SUBLEVEL = 9
-+SUBLEVEL = 8
+-SUBLEVEL = 8
++SUBLEVEL = 9
EXTRAVERSION =
NAME = Psychotic Stoned Sheep
diff --git a/arch/arc/kernel/time.c b/arch/arc/kernel/time.c
-index c10390d..f927b8d 100644
+index f927b8d..c10390d 100644
--- a/arch/arc/kernel/time.c
+++ b/arch/arc/kernel/time.c
-@@ -152,17 +152,14 @@ static cycle_t arc_read_rtc(struct clocksource *cs)
+@@ -152,14 +152,17 @@ static cycle_t arc_read_rtc(struct clocksource *cs)
cycle_t full;
} stamp;
-- /*
-- * hardware has an internal state machine which tracks readout of
-- * low/high and updates the CTRL.status if
-- * - interrupt/exception taken between the two reads
-- * - high increments after low has been read
-- */
-- do {
-- stamp.low = read_aux_reg(AUX_RTC_LOW);
-- stamp.high = read_aux_reg(AUX_RTC_HIGH);
-- status = read_aux_reg(AUX_RTC_CTRL);
-- } while (!(status & _BITUL(31)));
-+
-+ __asm__ __volatile(
-+ "1: \n"
-+ " lr %0, [AUX_RTC_LOW] \n"
-+ " lr %1, [AUX_RTC_HIGH] \n"
-+ " lr %2, [AUX_RTC_CTRL] \n"
-+ " bbit0.nt %2, 31, 1b \n"
-+ : "=r" (stamp.low), "=r" (stamp.high), "=r" (status));
+-
+- __asm__ __volatile(
+- "1: \n"
+- " lr %0, [AUX_RTC_LOW] \n"
+- " lr %1, [AUX_RTC_HIGH] \n"
+- " lr %2, [AUX_RTC_CTRL] \n"
+- " bbit0.nt %2, 31, 1b \n"
+- : "=r" (stamp.low), "=r" (stamp.high), "=r" (status));
++ /*
++ * hardware has an internal state machine which tracks readout of
++ * low/high and updates the CTRL.status if
++ * - interrupt/exception taken between the two reads
++ * - high increments after low has been read
++ */
++ do {
++ stamp.low = read_aux_reg(AUX_RTC_LOW);
++ stamp.high = read_aux_reg(AUX_RTC_HIGH);
++ status = read_aux_reg(AUX_RTC_CTRL);
++ } while (!(status & _BITUL(31)));
return stamp.full;
}
diff --git a/arch/arc/mm/dma.c b/arch/arc/mm/dma.c
-index 9288851..20afc65 100644
+index 20afc65..9288851 100644
--- a/arch/arc/mm/dma.c
+++ b/arch/arc/mm/dma.c
-@@ -105,31 +105,6 @@ static void arc_dma_free(struct device *dev, size_t size, void *vaddr,
+@@ -105,6 +105,31 @@ static void arc_dma_free(struct device *dev, size_t size, void *vaddr,
__free_pages(page, get_order(size));
}
--static int arc_dma_mmap(struct device *dev, struct vm_area_struct *vma,
-- void *cpu_addr, dma_addr_t dma_addr, size_t size,
-- unsigned long attrs)
--{
-- unsigned long user_count = vma_pages(vma);
-- unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
-- unsigned long pfn = __phys_to_pfn(plat_dma_to_phys(dev, dma_addr));
-- unsigned long off = vma->vm_pgoff;
-- int ret = -ENXIO;
--
-- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
--
-- if (dma_mmap_from_coherent(dev, vma, cpu_addr, size, &ret))
-- return ret;
--
-- if (off < count && user_count <= (count - off)) {
-- ret = remap_pfn_range(vma, vma->vm_start,
-- pfn + off,
-- user_count << PAGE_SHIFT,
-- vma->vm_page_prot);
-- }
--
-- return ret;
--}
--
++static int arc_dma_mmap(struct device *dev, struct vm_area_struct *vma,
++ void *cpu_addr, dma_addr_t dma_addr, size_t size,
++ unsigned long attrs)
++{
++ unsigned long user_count = vma_pages(vma);
++ unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
++ unsigned long pfn = __phys_to_pfn(plat_dma_to_phys(dev, dma_addr));
++ unsigned long off = vma->vm_pgoff;
++ int ret = -ENXIO;
++
++ vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
++
++ if (dma_mmap_from_coherent(dev, vma, cpu_addr, size, &ret))
++ return ret;
++
++ if (off < count && user_count <= (count - off)) {
++ ret = remap_pfn_range(vma, vma->vm_start,
++ pfn + off,
++ user_count << PAGE_SHIFT,
++ vma->vm_page_prot);
++ }
++
++ return ret;
++}
++
/*
* streaming DMA Mapping API...
* CPU accesses page via normal paddr, thus needs to explicitly made
-@@ -218,7 +193,6 @@ static int arc_dma_supported(struct device *dev, u64 dma_mask)
+@@ -193,6 +218,7 @@ static int arc_dma_supported(struct device *dev, u64 dma_mask)
struct dma_map_ops arc_dma_ops = {
.alloc = arc_dma_alloc,
.free = arc_dma_free,
-- .mmap = arc_dma_mmap,
++ .mmap = arc_dma_mmap,
.map_page = arc_dma_map_page,
.map_sg = arc_dma_map_sg,
.sync_single_for_device = arc_dma_sync_single_for_device,
diff --git a/arch/s390/hypfs/hypfs_diag.c b/arch/s390/hypfs/hypfs_diag.c
-index 794bebb..28f03ca 100644
+index 28f03ca..794bebb 100644
--- a/arch/s390/hypfs/hypfs_diag.c
+++ b/arch/s390/hypfs/hypfs_diag.c
@@ -363,11 +363,11 @@ static void *diag204_store(void)
static int diag224_get_name_table(void)
{
/* memory must be below 2GB */
-- diag224_cpu_names = (char *) __get_free_page(GFP_KERNEL | GFP_DMA);
-+ diag224_cpu_names = kmalloc(PAGE_SIZE, GFP_KERNEL | GFP_DMA);
+- diag224_cpu_names = kmalloc(PAGE_SIZE, GFP_KERNEL | GFP_DMA);
++ diag224_cpu_names = (char *) __get_free_page(GFP_KERNEL | GFP_DMA);
if (!diag224_cpu_names)
return -ENOMEM;
if (diag224(diag224_cpu_names)) {
-- free_page((unsigned long) diag224_cpu_names);
-+ kfree(diag224_cpu_names);
+- kfree(diag224_cpu_names);
++ free_page((unsigned long) diag224_cpu_names);
return -EOPNOTSUPP;
}
EBCASC(diag224_cpu_names + 16, (*diag224_cpu_names + 1) * 16);
@@ -106,423 +106,423 @@ index 794bebb..28f03ca 100644
static void diag224_delete_name_table(void)
{
-- free_page((unsigned long) diag224_cpu_names);
-+ kfree(diag224_cpu_names);
+- kfree(diag224_cpu_names);
++ free_page((unsigned long) diag224_cpu_names);
}
static int diag224_idx2name(int index, char *name)
diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
-index 602af69..0332317 100644
+index 0332317..602af69 100644
--- a/arch/s390/include/asm/processor.h
+++ b/arch/s390/include/asm/processor.h
@@ -192,7 +192,7 @@ struct task_struct;
struct mm_struct;
struct seq_file;
--typedef int (*dump_trace_func_t)(void *data, unsigned long address, int reliable);
-+typedef int (*dump_trace_func_t)(void *data, unsigned long address);
+-typedef int (*dump_trace_func_t)(void *data, unsigned long address);
++typedef int (*dump_trace_func_t)(void *data, unsigned long address, int reliable);
void dump_trace(dump_trace_func_t func, void *data,
struct task_struct *task, unsigned long sp);
diff --git a/arch/s390/kernel/dumpstack.c b/arch/s390/kernel/dumpstack.c
-index 518f615..6693383 100644
+index 6693383..518f615 100644
--- a/arch/s390/kernel/dumpstack.c
+++ b/arch/s390/kernel/dumpstack.c
@@ -38,10 +38,10 @@ __dump_trace(dump_trace_func_t func, void *data, unsigned long sp,
if (sp < low || sp > high - sizeof(*sf))
return sp;
sf = (struct stack_frame *) sp;
-- if (func(data, sf->gprs[8], 0))
-- return sp;
++ if (func(data, sf->gprs[8], 0))
++ return sp;
/* Follow the backchain. */
while (1) {
-+ if (func(data, sf->gprs[8]))
-+ return sp;
+- if (func(data, sf->gprs[8]))
+- return sp;
low = sp;
sp = sf->back_chain;
if (!sp)
-@@ -49,8 +49,6 @@ __dump_trace(dump_trace_func_t func, void *data, unsigned long sp,
+@@ -49,6 +49,8 @@ __dump_trace(dump_trace_func_t func, void *data, unsigned long sp,
if (sp <= low || sp > high - sizeof(*sf))
return sp;
sf = (struct stack_frame *) sp;
-- if (func(data, sf->gprs[8], 1))
-- return sp;
++ if (func(data, sf->gprs[8], 1))
++ return sp;
}
/* Zero backchain detected, check for interrupt frame. */
sp = (unsigned long) (sf + 1);
-@@ -58,7 +56,7 @@ __dump_trace(dump_trace_func_t func, void *data, unsigned long sp,
+@@ -56,7 +58,7 @@ __dump_trace(dump_trace_func_t func, void *data, unsigned long sp,
return sp;
regs = (struct pt_regs *) sp;
if (!user_mode(regs)) {
-- if (func(data, regs->psw.addr, 1))
-+ if (func(data, regs->psw.addr))
+- if (func(data, regs->psw.addr))
++ if (func(data, regs->psw.addr, 1))
return sp;
}
low = sp;
-@@ -92,7 +90,7 @@ struct return_address_data {
+@@ -90,7 +92,7 @@ struct return_address_data {
int depth;
};
--static int __return_address(void *data, unsigned long address, int reliable)
-+static int __return_address(void *data, unsigned long address)
+-static int __return_address(void *data, unsigned long address)
++static int __return_address(void *data, unsigned long address, int reliable)
{
struct return_address_data *rd = data;
-@@ -111,12 +109,9 @@ unsigned long return_address(int depth)
+@@ -109,9 +111,12 @@ unsigned long return_address(int depth)
}
EXPORT_SYMBOL_GPL(return_address);
--static int show_address(void *data, unsigned long address, int reliable)
-+static int show_address(void *data, unsigned long address)
+-static int show_address(void *data, unsigned long address)
++static int show_address(void *data, unsigned long address, int reliable)
{
-- if (reliable)
-- printk(" [<%016lx>] %pSR \n", address, (void *)address);
-- else
-- printk("([<%016lx>] %pSR)\n", address, (void *)address);
-+ printk("([<%016lx>] %pSR)\n", address, (void *)address);
+- printk("([<%016lx>] %pSR)\n", address, (void *)address);
++ if (reliable)
++ printk(" [<%016lx>] %pSR \n", address, (void *)address);
++ else
++ printk("([<%016lx>] %pSR)\n", address, (void *)address);
return 0;
}
diff --git a/arch/s390/kernel/perf_event.c b/arch/s390/kernel/perf_event.c
-index 955a7b6..17431f6 100644
+index 17431f6..955a7b6 100644
--- a/arch/s390/kernel/perf_event.c
+++ b/arch/s390/kernel/perf_event.c
@@ -222,7 +222,7 @@ static int __init service_level_perf_register(void)
}
arch_initcall(service_level_perf_register);
--static int __perf_callchain_kernel(void *data, unsigned long address, int reliable)
-+static int __perf_callchain_kernel(void *data, unsigned long address)
+-static int __perf_callchain_kernel(void *data, unsigned long address)
++static int __perf_callchain_kernel(void *data, unsigned long address, int reliable)
{
struct perf_callchain_entry_ctx *entry = data;
diff --git a/arch/s390/kernel/stacktrace.c b/arch/s390/kernel/stacktrace.c
-index 355db9d..44f84b2 100644
+index 44f84b2..355db9d 100644
--- a/arch/s390/kernel/stacktrace.c
+++ b/arch/s390/kernel/stacktrace.c
@@ -27,12 +27,12 @@ static int __save_address(void *data, unsigned long address, int nosched)
return 1;
}
--static int save_address(void *data, unsigned long address, int reliable)
-+static int save_address(void *data, unsigned long address)
+-static int save_address(void *data, unsigned long address)
++static int save_address(void *data, unsigned long address, int reliable)
{
return __save_address(data, address, 0);
}
--static int save_address_nosched(void *data, unsigned long address, int reliable)
-+static int save_address_nosched(void *data, unsigned long address)
+-static int save_address_nosched(void *data, unsigned long address)
++static int save_address_nosched(void *data, unsigned long address, int reliable)
{
return __save_address(data, address, 1);
}
diff --git a/arch/s390/oprofile/init.c b/arch/s390/oprofile/init.c
-index 9a4de45..16f4c39 100644
+index 16f4c39..9a4de45 100644
--- a/arch/s390/oprofile/init.c
+++ b/arch/s390/oprofile/init.c
@@ -13,7 +13,7 @@
#include <linux/init.h>
#include <asm/processor.h>
--static int __s390_backtrace(void *data, unsigned long address, int reliable)
-+static int __s390_backtrace(void *data, unsigned long address)
+-static int __s390_backtrace(void *data, unsigned long address)
++static int __s390_backtrace(void *data, unsigned long address, int reliable)
{
unsigned int *depth = data;
diff --git a/arch/x86/entry/Makefile b/arch/x86/entry/Makefile
-index 9976fce..77f28ce 100644
+index 77f28ce..9976fce 100644
--- a/arch/x86/entry/Makefile
+++ b/arch/x86/entry/Makefile
@@ -5,8 +5,8 @@
OBJECT_FILES_NON_STANDARD_entry_$(BITS).o := y
OBJECT_FILES_NON_STANDARD_entry_64_compat.o := y
--CFLAGS_syscall_64.o += $(call cc-option,-Wno-override-init,)
--CFLAGS_syscall_32.o += $(call cc-option,-Wno-override-init,)
-+CFLAGS_syscall_64.o += -Wno-override-init
-+CFLAGS_syscall_32.o += -Wno-override-init
+-CFLAGS_syscall_64.o += -Wno-override-init
+-CFLAGS_syscall_32.o += -Wno-override-init
++CFLAGS_syscall_64.o += $(call cc-option,-Wno-override-init,)
++CFLAGS_syscall_32.o += $(call cc-option,-Wno-override-init,)
obj-y := entry_$(BITS).o thunk_$(BITS).o syscall_$(BITS).o
obj-y += common.o
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
-index d99ca57..fbd1944 100644
+index fbd1944..d99ca57 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
-@@ -453,7 +453,6 @@ static void __init acpi_sci_ioapic_setup(u8 bus_irq, u16 polarity, u16 trigger,
+@@ -453,6 +453,7 @@ static void __init acpi_sci_ioapic_setup(u8 bus_irq, u16 polarity, u16 trigger,
polarity = acpi_sci_flags & ACPI_MADT_POLARITY_MASK;
mp_override_legacy_irq(bus_irq, polarity, trigger, gsi);
-- acpi_penalize_sci_irq(bus_irq, trigger, polarity);
++ acpi_penalize_sci_irq(bus_irq, trigger, polarity);
/*
* stash over-ride to indicate we've been here
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
-index caea575..60746ef 100644
+index 60746ef..caea575 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -662,7 +662,7 @@ static int ghes_proc(struct ghes *ghes)
ghes_do_proc(ghes, ghes->estatus);
out:
ghes_clear_estatus(ghes);
-- return rc;
-+ return 0;
+- return 0;
++ return rc;
}
static void ghes_add_timer(struct ghes *ghes)
diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
-index bc3d914..c983bf7 100644
+index c983bf7..bc3d914 100644
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
-@@ -87,7 +87,6 @@ struct acpi_pci_link {
+@@ -87,6 +87,7 @@ struct acpi_pci_link {
static LIST_HEAD(acpi_link_list);
static DEFINE_MUTEX(acpi_link_lock);
--static int sci_irq = -1, sci_penalty;
++static int sci_irq = -1, sci_penalty;
/* --------------------------------------------------------------------------
PCI Link Device Management
-@@ -497,13 +496,25 @@ static int acpi_irq_get_penalty(int irq)
+@@ -496,25 +497,13 @@ static int acpi_irq_get_penalty(int irq)
{
int penalty = 0;
-- if (irq == sci_irq)
-- penalty += sci_penalty;
-+ /*
-+ * Penalize IRQ used by ACPI SCI. If ACPI SCI pin attributes conflict
-+ * with PCI IRQ attributes, mark ACPI SCI as ISA_ALWAYS so it won't be
-+ * use for PCI IRQs.
-+ */
-+ if (irq == acpi_gbl_FADT.sci_interrupt) {
-+ u32 type = irq_get_trigger_type(irq) & IRQ_TYPE_SENSE_MASK;
-+
-+ if (type != IRQ_TYPE_LEVEL_LOW)
-+ penalty += PIRQ_PENALTY_ISA_ALWAYS;
-+ else
-+ penalty += PIRQ_PENALTY_PCI_USING;
-+ }
+- /*
+- * Penalize IRQ used by ACPI SCI. If ACPI SCI pin attributes conflict
+- * with PCI IRQ attributes, mark ACPI SCI as ISA_ALWAYS so it won't be
+- * use for PCI IRQs.
+- */
+- if (irq == acpi_gbl_FADT.sci_interrupt) {
+- u32 type = irq_get_trigger_type(irq) & IRQ_TYPE_SENSE_MASK;
+-
+- if (type != IRQ_TYPE_LEVEL_LOW)
+- penalty += PIRQ_PENALTY_ISA_ALWAYS;
+- else
+- penalty += PIRQ_PENALTY_PCI_USING;
+- }
++ if (irq == sci_irq)
++ penalty += sci_penalty;
if (irq < ACPI_MAX_ISA_IRQS)
return penalty + acpi_isa_irq_penalty[irq];
-- return penalty + acpi_irq_pci_sharing_penalty(irq);
-+ penalty += acpi_irq_pci_sharing_penalty(irq);
-+ return penalty;
+- penalty += acpi_irq_pci_sharing_penalty(irq);
+- return penalty;
++ return penalty + acpi_irq_pci_sharing_penalty(irq);
}
int __init acpi_irq_penalty_init(void)
-@@ -608,10 +619,6 @@ static int acpi_pci_link_allocate(struct acpi_pci_link *link)
+@@ -619,6 +608,10 @@ static int acpi_pci_link_allocate(struct acpi_pci_link *link)
acpi_device_bid(link->device));
return -ENODEV;
} else {
-- if (link->irq.active < ACPI_MAX_ISA_IRQS)
-- acpi_isa_irq_penalty[link->irq.active] +=
-- PIRQ_PENALTY_PCI_USING;
--
++ if (link->irq.active < ACPI_MAX_ISA_IRQS)
++ acpi_isa_irq_penalty[link->irq.active] +=
++ PIRQ_PENALTY_PCI_USING;
++
printk(KERN_WARNING PREFIX "%s [%s] enabled at IRQ %d\n",
acpi_device_name(link->device),
acpi_device_bid(link->device), link->irq.active);
-@@ -842,7 +849,7 @@ static int __init acpi_irq_penalty_update(char *str, int used)
+@@ -849,7 +842,7 @@ static int __init acpi_irq_penalty_update(char *str, int used)
continue;
if (used)
-- new_penalty = acpi_isa_irq_penalty[irq] +
-+ new_penalty = acpi_irq_get_penalty(irq) +
+- new_penalty = acpi_irq_get_penalty(irq) +
++ new_penalty = acpi_isa_irq_penalty[irq] +
PIRQ_PENALTY_ISA_USED;
else
new_penalty = 0;
-@@ -864,7 +871,7 @@ static int __init acpi_irq_penalty_update(char *str, int used)
+@@ -871,7 +864,7 @@ static int __init acpi_irq_penalty_update(char *str, int used)
void acpi_penalize_isa_irq(int irq, int active)
{
if ((irq >= 0) && (irq < ARRAY_SIZE(acpi_isa_irq_penalty)))
-- acpi_isa_irq_penalty[irq] +=
-+ acpi_isa_irq_penalty[irq] = acpi_irq_get_penalty(irq) +
+- acpi_isa_irq_penalty[irq] = acpi_irq_get_penalty(irq) +
++ acpi_isa_irq_penalty[irq] +=
(active ? PIRQ_PENALTY_ISA_USED : PIRQ_PENALTY_PCI_USING);
}
-@@ -874,17 +881,6 @@ bool acpi_isa_irq_available(int irq)
+@@ -881,6 +874,17 @@ bool acpi_isa_irq_available(int irq)
acpi_irq_get_penalty(irq) < PIRQ_PENALTY_ISA_ALWAYS);
}
--void acpi_penalize_sci_irq(int irq, int trigger, int polarity)
--{
-- sci_irq = irq;
--
-- if (trigger == ACPI_MADT_TRIGGER_LEVEL &&
-- polarity == ACPI_MADT_POLARITY_ACTIVE_LOW)
-- sci_penalty = PIRQ_PENALTY_PCI_USING;
-- else
-- sci_penalty = PIRQ_PENALTY_ISA_ALWAYS;
--}
--
++void acpi_penalize_sci_irq(int irq, int trigger, int polarity)
++{
++ sci_irq = irq;
++
++ if (trigger == ACPI_MADT_TRIGGER_LEVEL &&
++ polarity == ACPI_MADT_POLARITY_ACTIVE_LOW)
++ sci_penalty = PIRQ_PENALTY_PCI_USING;
++ else
++ sci_penalty = PIRQ_PENALTY_ISA_ALWAYS;
++}
++
/*
* Over-ride default table to reserve additional IRQs for use by ISA
* e.g. acpi_irq_isa=5
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
-index 8348272..100be55 100644
+index 100be55..8348272 100644
--- a/drivers/block/drbd/drbd_main.c
+++ b/drivers/block/drbd/drbd_main.c
@@ -1871,7 +1871,7 @@ int drbd_send(struct drbd_connection *connection, struct socket *sock,
drbd_update_congested(connection);
}
do {
-- rv = kernel_sendmsg(sock, &msg, &iov, 1, iov.iov_len);
-+ rv = kernel_sendmsg(sock, &msg, &iov, 1, size);
+- rv = kernel_sendmsg(sock, &msg, &iov, 1, size);
++ rv = kernel_sendmsg(sock, &msg, &iov, 1, iov.iov_len);
if (rv == -EAGAIN) {
if (we_should_drop_the_connection(connection, sock))
break;
diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c
-index 0f7d28a..4431129 100644
+index 4431129..0f7d28a 100644
--- a/drivers/char/agp/intel-gtt.c
+++ b/drivers/char/agp/intel-gtt.c
-@@ -845,8 +845,6 @@ void intel_gtt_insert_page(dma_addr_t addr,
+@@ -845,6 +845,8 @@ void intel_gtt_insert_page(dma_addr_t addr,
unsigned int flags)
{
intel_private.driver->write_entry(addr, pg, flags);
-- if (intel_private.driver->chipset_flush)
-- intel_private.driver->chipset_flush();
++ if (intel_private.driver->chipset_flush)
++ intel_private.driver->chipset_flush();
}
EXPORT_SYMBOL(intel_gtt_insert_page);
diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c
-index 340f96e..9203f2d 100644
+index 9203f2d..340f96e 100644
--- a/drivers/char/hw_random/core.c
+++ b/drivers/char/hw_random/core.c
@@ -84,14 +84,14 @@ static size_t rng_buffer_size(void)
static void add_early_randomness(struct hwrng *rng)
{
-+ unsigned char bytes[16];
+- unsigned char bytes[16];
int bytes_read;
-- size_t size = min_t(size_t, 16, rng_buffer_size());
++ size_t size = min_t(size_t, 16, rng_buffer_size());
mutex_lock(&reading_mutex);
-- bytes_read = rng_get_data(rng, rng_buffer, size, 1);
-+ bytes_read = rng_get_data(rng, bytes, sizeof(bytes), 1);
+- bytes_read = rng_get_data(rng, bytes, sizeof(bytes), 1);
++ bytes_read = rng_get_data(rng, rng_buffer, size, 1);
mutex_unlock(&reading_mutex);
if (bytes_read > 0)
-- add_device_randomness(rng_buffer, bytes_read);
-+ add_device_randomness(bytes, bytes_read);
+- add_device_randomness(bytes, bytes_read);
++ add_device_randomness(rng_buffer, bytes_read);
}
static inline void cleanup_rng(struct kref *kref)
diff --git a/drivers/clk/clk-qoriq.c b/drivers/clk/clk-qoriq.c
-index 80ae2a5..20b1055 100644
+index 20b1055..80ae2a5 100644
--- a/drivers/clk/clk-qoriq.c
+++ b/drivers/clk/clk-qoriq.c
-@@ -700,7 +700,6 @@ static struct clk * __init create_mux_common(struct clockgen *cg,
+@@ -700,6 +700,7 @@ static struct clk * __init create_mux_common(struct clockgen *cg,
struct mux_hwclock *hwc,
const struct clk_ops *ops,
unsigned long min_rate,
-- unsigned long max_rate,
++ unsigned long max_rate,
unsigned long pct80_rate,
const char *fmt, int idx)
{
-@@ -729,8 +728,6 @@ static struct clk * __init create_mux_common(struct clockgen *cg,
+@@ -728,6 +729,8 @@ static struct clk * __init create_mux_common(struct clockgen *cg,
continue;
if (rate < min_rate)
continue;
-- if (rate > max_rate)
-- continue;
++ if (rate > max_rate)
++ continue;
parent_names[j] = div->name;
hwc->parent_to_clksel[j] = i;
-@@ -762,7 +759,7 @@ static struct clk * __init create_one_cmux(struct clockgen *cg, int idx)
+@@ -759,7 +762,7 @@ static struct clk * __init create_one_cmux(struct clockgen *cg, int idx)
struct mux_hwclock *hwc;
const struct clockgen_pll_div *div;
unsigned long plat_rate, min_rate;
-- u64 max_rate, pct80_rate;
-+ u64 pct80_rate;
+- u64 pct80_rate;
++ u64 max_rate, pct80_rate;
u32 clksel;
hwc = kzalloc(sizeof(*hwc), GFP_KERNEL);
-@@ -790,8 +787,8 @@ static struct clk * __init create_one_cmux(struct clockgen *cg, int idx)
+@@ -787,8 +790,8 @@ static struct clk * __init create_one_cmux(struct clockgen *cg, int idx)
return NULL;
}
-- max_rate = clk_get_rate(div->clk);
-- pct80_rate = max_rate * 8;
-+ pct80_rate = clk_get_rate(div->clk);
-+ pct80_rate *= 8;
+- pct80_rate = clk_get_rate(div->clk);
+- pct80_rate *= 8;
++ max_rate = clk_get_rate(div->clk);
++ pct80_rate = max_rate * 8;
do_div(pct80_rate, 10);
plat_rate = clk_get_rate(cg->pll[PLATFORM_PLL].div[PLL_DIV1].clk);
-@@ -801,7 +798,7 @@ static struct clk * __init create_one_cmux(struct clockgen *cg, int idx)
+@@ -798,7 +801,7 @@ static struct clk * __init create_one_cmux(struct clockgen *cg, int idx)
else
min_rate = plat_rate / 2;
-- return create_mux_common(cg, hwc, &cmux_ops, min_rate, max_rate,
-+ return create_mux_common(cg, hwc, &cmux_ops, min_rate,
+- return create_mux_common(cg, hwc, &cmux_ops, min_rate,
++ return create_mux_common(cg, hwc, &cmux_ops, min_rate, max_rate,
pct80_rate, "cg-cmux%d", idx);
}
-@@ -816,7 +813,7 @@ static struct clk * __init create_one_hwaccel(struct clockgen *cg, int idx)
+@@ -813,7 +816,7 @@ static struct clk * __init create_one_hwaccel(struct clockgen *cg, int idx)
hwc->reg = cg->regs + 0x20 * idx + 0x10;
hwc->info = cg->info.hwaccel[idx];
-- return create_mux_common(cg, hwc, &hwaccel_ops, 0, ULONG_MAX, 0,
-+ return create_mux_common(cg, hwc, &hwaccel_ops, 0, 0,
+- return create_mux_common(cg, hwc, &hwaccel_ops, 0, 0,
++ return create_mux_common(cg, hwc, &hwaccel_ops, 0, ULONG_MAX, 0,
"cg-hwaccel%d", idx);
}
diff --git a/drivers/clk/samsung/clk-exynos-audss.c b/drivers/clk/samsung/clk-exynos-audss.c
-index 0fa91f3..bdf8b97 100644
+index bdf8b97..0fa91f3 100644
--- a/drivers/clk/samsung/clk-exynos-audss.c
+++ b/drivers/clk/samsung/clk-exynos-audss.c
-@@ -82,7 +82,6 @@ static const struct of_device_id exynos_audss_clk_of_match[] = {
+@@ -82,6 +82,7 @@ static const struct of_device_id exynos_audss_clk_of_match[] = {
.data = (void *)TYPE_EXYNOS5420, },
{},
};
--MODULE_DEVICE_TABLE(of, exynos_audss_clk_of_match);
++MODULE_DEVICE_TABLE(of, exynos_audss_clk_of_match);
static void exynos_audss_clk_teardown(void)
{
diff --git a/drivers/clocksource/timer-sun5i.c b/drivers/clocksource/timer-sun5i.c
-index 4f87f3e..c184eb8 100644
+index c184eb8..4f87f3e 100644
--- a/drivers/clocksource/timer-sun5i.c
+++ b/drivers/clocksource/timer-sun5i.c
-@@ -152,13 +152,6 @@ static irqreturn_t sun5i_timer_interrupt(int irq, void *dev_id)
+@@ -152,6 +152,13 @@ static irqreturn_t sun5i_timer_interrupt(int irq, void *dev_id)
return IRQ_HANDLED;
}
--static cycle_t sun5i_clksrc_read(struct clocksource *clksrc)
--{
-- struct sun5i_timer_clksrc *cs = to_sun5i_timer_clksrc(clksrc);
--
-- return ~readl(cs->timer.base + TIMER_CNTVAL_LO_REG(1));
--}
--
++static cycle_t sun5i_clksrc_read(struct clocksource *clksrc)
++{
++ struct sun5i_timer_clksrc *cs = to_sun5i_timer_clksrc(clksrc);
++
++ return ~readl(cs->timer.base + TIMER_CNTVAL_LO_REG(1));
++}
++
static int sun5i_rate_cb_clksrc(struct notifier_block *nb,
unsigned long event, void *data)
{
-@@ -217,13 +210,8 @@ static int __init sun5i_setup_clocksource(struct device_node *node,
+@@ -210,8 +217,13 @@ static int __init sun5i_setup_clocksource(struct device_node *node,
writel(TIMER_CTL_ENABLE | TIMER_CTL_RELOAD,
base + TIMER_CTL_REG(1));
-- cs->clksrc.name = node->name;
-- cs->clksrc.rating = 340;
-- cs->clksrc.read = sun5i_clksrc_read;
-- cs->clksrc.mask = CLOCKSOURCE_MASK(32);
-- cs->clksrc.flags = CLOCK_SOURCE_IS_CONTINUOUS;
--
-- ret = clocksource_register_hz(&cs->clksrc, rate);
-+ ret = clocksource_mmio_init(base + TIMER_CNTVAL_LO_REG(1), node->name,
-+ rate, 340, 32, clocksource_mmio_readl_down);
+- ret = clocksource_mmio_init(base + TIMER_CNTVAL_LO_REG(1), node->name,
+- rate, 340, 32, clocksource_mmio_readl_down);
++ cs->clksrc.name = node->name;
++ cs->clksrc.rating = 340;
++ cs->clksrc.read = sun5i_clksrc_read;
++ cs->clksrc.mask = CLOCKSOURCE_MASK(32);
++ cs->clksrc.flags = CLOCK_SOURCE_IS_CONTINUOUS;
++
++ ret = clocksource_register_hz(&cs->clksrc, rate);
if (ret) {
pr_err("Couldn't register clock source.\n");
goto err_remove_notifier;
diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c
-index 1ed6132..cd5dc27 100644
+index cd5dc27..1ed6132 100644
--- a/drivers/gpio/gpio-mvebu.c
+++ b/drivers/gpio/gpio-mvebu.c
@@ -293,10 +293,10 @@ static void mvebu_gpio_irq_ack(struct irq_data *d)
{
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
struct mvebu_gpio_chip *mvchip = gc->private;
-- u32 mask = d->mask;
-+ u32 mask = ~(1 << (d->irq - gc->irq_base));
+- u32 mask = ~(1 << (d->irq - gc->irq_base));
++ u32 mask = d->mask;
irq_gc_lock(gc);
-- writel_relaxed(~mask, mvebu_gpioreg_edge_cause(mvchip));
-+ writel_relaxed(mask, mvebu_gpioreg_edge_cause(mvchip));
+- writel_relaxed(mask, mvebu_gpioreg_edge_cause(mvchip));
++ writel_relaxed(~mask, mvebu_gpioreg_edge_cause(mvchip));
irq_gc_unlock(gc);
}
@@ -530,663 +530,664 @@ index 1ed6132..cd5dc27 100644
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
struct mvebu_gpio_chip *mvchip = gc->private;
struct irq_chip_type *ct = irq_data_get_chip_type(d);
-- u32 mask = d->mask;
-+ u32 mask = 1 << (d->irq - gc->irq_base);
+- u32 mask = 1 << (d->irq - gc->irq_base);
++ u32 mask = d->mask;
irq_gc_lock(gc);
ct->mask_cache_priv &= ~mask;
-@@ -319,7 +319,8 @@ static void mvebu_gpio_edge_irq_unmask(struct irq_data *d)
+@@ -319,8 +319,7 @@ static void mvebu_gpio_edge_irq_unmask(struct irq_data *d)
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
struct mvebu_gpio_chip *mvchip = gc->private;
struct irq_chip_type *ct = irq_data_get_chip_type(d);
-- u32 mask = d->mask;
-+
-+ u32 mask = 1 << (d->irq - gc->irq_base);
+-
+- u32 mask = 1 << (d->irq - gc->irq_base);
++ u32 mask = d->mask;
irq_gc_lock(gc);
ct->mask_cache_priv |= mask;
-@@ -332,7 +333,8 @@ static void mvebu_gpio_level_irq_mask(struct irq_data *d)
+@@ -333,8 +332,7 @@ static void mvebu_gpio_level_irq_mask(struct irq_data *d)
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
struct mvebu_gpio_chip *mvchip = gc->private;
struct irq_chip_type *ct = irq_data_get_chip_type(d);
-- u32 mask = d->mask;
-+
-+ u32 mask = 1 << (d->irq - gc->irq_base);
+-
+- u32 mask = 1 << (d->irq - gc->irq_base);
++ u32 mask = d->mask;
irq_gc_lock(gc);
ct->mask_cache_priv &= ~mask;
-@@ -345,7 +347,8 @@ static void mvebu_gpio_level_irq_unmask(struct irq_data *d)
+@@ -347,8 +345,7 @@ static void mvebu_gpio_level_irq_unmask(struct irq_data *d)
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
struct mvebu_gpio_chip *mvchip = gc->private;
struct irq_chip_type *ct = irq_data_get_chip_type(d);
-- u32 mask = d->mask;
-+
-+ u32 mask = 1 << (d->irq - gc->irq_base);
+-
+- u32 mask = 1 << (d->irq - gc->irq_base);
++ u32 mask = d->mask;
irq_gc_lock(gc);
ct->mask_cache_priv |= mask;
-@@ -459,7 +462,7 @@ static void mvebu_gpio_irq_handler(struct irq_desc *desc)
+@@ -462,7 +459,7 @@ static void mvebu_gpio_irq_handler(struct irq_desc *desc)
for (i = 0; i < mvchip->chip.ngpio; i++) {
int irq;
-- irq = irq_find_mapping(mvchip->domain, i);
-+ irq = mvchip->irqbase + i;
+- irq = mvchip->irqbase + i;
++ irq = irq_find_mapping(mvchip->domain, i);
if (!(cause & (1 << i)))
continue;
-@@ -652,7 +655,6 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
+@@ -655,6 +652,7 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
struct irq_chip_type *ct;
struct clk *clk;
unsigned int ngpios;
-- bool have_irqs;
++ bool have_irqs;
int soc_variant;
int i, cpu, id;
int err;
-@@ -663,9 +665,6 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
+@@ -665,6 +663,9 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
else
soc_variant = MVEBU_GPIO_SOC_VARIANT_ORION;
-- /* Some gpio controllers do not provide irq support */
-- have_irqs = of_irq_count(np) != 0;
--
++ /* Some gpio controllers do not provide irq support */
++ have_irqs = of_irq_count(np) != 0;
++
mvchip = devm_kzalloc(&pdev->dev, sizeof(struct mvebu_gpio_chip),
GFP_KERNEL);
if (!mvchip)
-@@ -698,8 +697,7 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
+@@ -697,7 +698,8 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
mvchip->chip.get = mvebu_gpio_get;
mvchip->chip.direction_output = mvebu_gpio_direction_output;
mvchip->chip.set = mvebu_gpio_set;
-- if (have_irqs)
-- mvchip->chip.to_irq = mvebu_gpio_to_irq;
-+ mvchip->chip.to_irq = mvebu_gpio_to_irq;
+- mvchip->chip.to_irq = mvebu_gpio_to_irq;
++ if (have_irqs)
++ mvchip->chip.to_irq = mvebu_gpio_to_irq;
mvchip->chip.base = id * MVEBU_MAX_GPIO_PER_BANK;
mvchip->chip.ngpio = ngpios;
mvchip->chip.can_sleep = false;
-@@ -760,30 +758,34 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
+@@ -758,34 +760,30 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
devm_gpiochip_add_data(&pdev->dev, &mvchip->chip, mvchip);
/* Some gpio controllers do not provide irq support */
-- if (!have_irqs)
-+ if (!of_irq_count(np))
+- if (!of_irq_count(np))
++ if (!have_irqs)
return 0;
-- mvchip->domain =
-- irq_domain_add_linear(np, ngpios, &irq_generic_chip_ops, NULL);
-- if (!mvchip->domain) {
-- dev_err(&pdev->dev, "couldn't allocate irq domain %s (DT).\n",
-- mvchip->chip.label);
-- return -ENODEV;
-+ /* Setup the interrupt handlers. Each chip can have up to 4
-+ * interrupt handlers, with each handler dealing with 8 GPIO
-+ * pins. */
-+ for (i = 0; i < 4; i++) {
-+ int irq = platform_get_irq(pdev, i);
-+
-+ if (irq < 0)
-+ continue;
-+ irq_set_chained_handler_and_data(irq, mvebu_gpio_irq_handler,
-+ mvchip);
- }
-
-- err = irq_alloc_domain_generic_chips(
-- mvchip->domain, ngpios, 2, np->name, handle_level_irq,
-- IRQ_NOREQUEST | IRQ_NOPROBE | IRQ_LEVEL, 0, 0);
-- if (err) {
-- dev_err(&pdev->dev, "couldn't allocate irq chips %s (DT).\n",
-- mvchip->chip.label);
-- goto err_domain;
-+ mvchip->irqbase = irq_alloc_descs(-1, 0, ngpios, -1);
-+ if (mvchip->irqbase < 0) {
-+ dev_err(&pdev->dev, "no irqs\n");
-+ return mvchip->irqbase;
-+ }
-+
-+ gc = irq_alloc_generic_chip("mvebu_gpio_irq", 2, mvchip->irqbase,
-+ mvchip->membase, handle_level_irq);
-+ if (!gc) {
-+ dev_err(&pdev->dev, "Cannot allocate generic irq_chip\n");
-+ return -ENOMEM;
- }
-
-- /* NOTE: The common accessors cannot be used because of the percpu
-- * access to the mask registers
-- */
-- gc = irq_get_domain_generic_chip(mvchip->domain, 0);
- gc->private = mvchip;
- ct = &gc->chip_types[0];
- ct->type = IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW;
-@@ -801,23 +803,27 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
- ct->handler = handle_edge_irq;
- ct->chip.name = mvchip->chip.label;
-
- /* Setup the interrupt handlers. Each chip can have up to 4
- * interrupt handlers, with each handler dealing with 8 GPIO
-- * pins.
-- */
+- * pins. */
- for (i = 0; i < 4; i++) {
- int irq = platform_get_irq(pdev, i);
-+ irq_setup_generic_chip(gc, IRQ_MSK(ngpios), 0,
-+ IRQ_NOREQUEST, IRQ_LEVEL | IRQ_NOPROBE);
-
+-
- if (irq < 0)
- continue;
- irq_set_chained_handler_and_data(irq, mvebu_gpio_irq_handler,
- mvchip);
-+ /* Setup irq domain on top of the generic chip. */
-+ mvchip->domain = irq_domain_add_simple(np, mvchip->chip.ngpio,
-+ mvchip->irqbase,
-+ &irq_domain_simple_ops,
-+ mvchip);
+- }
+-
+- mvchip->irqbase = irq_alloc_descs(-1, 0, ngpios, -1);
+- if (mvchip->irqbase < 0) {
+- dev_err(&pdev->dev, "no irqs\n");
+- return mvchip->irqbase;
++ mvchip->domain =
++ irq_domain_add_linear(np, ngpios, &irq_generic_chip_ops, NULL);
+ if (!mvchip->domain) {
+ dev_err(&pdev->dev, "couldn't allocate irq domain %s (DT).\n",
+ mvchip->chip.label);
-+ err = -ENODEV;
-+ goto err_generic_chip;
++ return -ENODEV;
+ }
+
+- gc = irq_alloc_generic_chip("mvebu_gpio_irq", 2, mvchip->irqbase,
+- mvchip->membase, handle_level_irq);
+- if (!gc) {
+- dev_err(&pdev->dev, "Cannot allocate generic irq_chip\n");
+- return -ENOMEM;
++ err = irq_alloc_domain_generic_chips(
++ mvchip->domain, ngpios, 2, np->name, handle_level_irq,
++ IRQ_NOREQUEST | IRQ_NOPROBE | IRQ_LEVEL, 0, 0);
++ if (err) {
++ dev_err(&pdev->dev, "couldn't allocate irq chips %s (DT).\n",
++ mvchip->chip.label);
++ goto err_domain;
+ }
+
++ /* NOTE: The common accessors cannot be used because of the percpu
++ * access to the mask registers
++ */
++ gc = irq_get_domain_generic_chip(mvchip->domain, 0);
+ gc->private = mvchip;
+ ct = &gc->chip_types[0];
+ ct->type = IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW;
+@@ -803,27 +801,23 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
+ ct->handler = handle_edge_irq;
+ ct->chip.name = mvchip->chip.label;
+
+- irq_setup_generic_chip(gc, IRQ_MSK(ngpios), 0,
+- IRQ_NOREQUEST, IRQ_LEVEL | IRQ_NOPROBE);
++ /* Setup the interrupt handlers. Each chip can have up to 4
++ * interrupt handlers, with each handler dealing with 8 GPIO
++ * pins.
++ */
++ for (i = 0; i < 4; i++) {
++ int irq = platform_get_irq(pdev, i);
+
+- /* Setup irq domain on top of the generic chip. */
+- mvchip->domain = irq_domain_add_simple(np, mvchip->chip.ngpio,
+- mvchip->irqbase,
+- &irq_domain_simple_ops,
+- mvchip);
+- if (!mvchip->domain) {
+- dev_err(&pdev->dev, "couldn't allocate irq domain %s (DT).\n",
+- mvchip->chip.label);
+- err = -ENODEV;
+- goto err_generic_chip;
++ if (irq < 0)
++ continue;
++ irq_set_chained_handler_and_data(irq, mvebu_gpio_irq_handler,
++ mvchip);
}
return 0;
--err_domain:
-- irq_domain_remove(mvchip->domain);
-+err_generic_chip:
-+ irq_remove_generic_chip(gc, IRQ_MSK(ngpios), IRQ_NOREQUEST,
-+ IRQ_LEVEL | IRQ_NOPROBE);
-+ kfree(gc);
+-err_generic_chip:
+- irq_remove_generic_chip(gc, IRQ_MSK(ngpios), IRQ_NOREQUEST,
+- IRQ_LEVEL | IRQ_NOPROBE);
+- kfree(gc);
++err_domain:
++ irq_domain_remove(mvchip->domain);
return err;
}
diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c
-index e3fc901..a28feb3 100644
+index a28feb3..e3fc901 100644
--- a/drivers/gpio/gpiolib-of.c
+++ b/drivers/gpio/gpiolib-of.c
-@@ -26,18 +26,14 @@
+@@ -26,14 +26,18 @@
#include "gpiolib.h"
--static int of_gpiochip_match_node_and_xlate(struct gpio_chip *chip, void *data)
-+static int of_gpiochip_match_node(struct gpio_chip *chip, void *data)
+-static int of_gpiochip_match_node(struct gpio_chip *chip, void *data)
++static int of_gpiochip_match_node_and_xlate(struct gpio_chip *chip, void *data)
{
-- struct of_phandle_args *gpiospec = data;
--
-- return chip->gpiodev->dev.of_node == gpiospec->np &&
-- chip->of_xlate(chip, gpiospec, NULL) >= 0;
-+ return chip->gpiodev->dev.of_node == data;
+- return chip->gpiodev->dev.of_node == data;
++ struct of_phandle_args *gpiospec = data;
++
++ return chip->gpiodev->dev.of_node == gpiospec->np &&
++ chip->of_xlate(chip, gpiospec, NULL) >= 0;
}
--static struct gpio_chip *of_find_gpiochip_by_xlate(
-- struct of_phandle_args *gpiospec)
-+static struct gpio_chip *of_find_gpiochip_by_node(struct device_node *np)
+-static struct gpio_chip *of_find_gpiochip_by_node(struct device_node *np)
++static struct gpio_chip *of_find_gpiochip_by_xlate(
++ struct of_phandle_args *gpiospec)
{
-- return gpiochip_find(gpiospec, of_gpiochip_match_node_and_xlate);
-+ return gpiochip_find(np, of_gpiochip_match_node);
+- return gpiochip_find(np, of_gpiochip_match_node);
++ return gpiochip_find(gpiospec, of_gpiochip_match_node_and_xlate);
}
static struct gpio_desc *of_xlate_and_get_gpiod_flags(struct gpio_chip *chip,
-@@ -83,7 +79,7 @@ struct gpio_desc *of_get_named_gpiod_flags(struct device_node *np,
+@@ -79,7 +83,7 @@ struct gpio_desc *of_get_named_gpiod_flags(struct device_node *np,
return ERR_PTR(ret);
}
-- chip = of_find_gpiochip_by_xlate(&gpiospec);
-+ chip = of_find_gpiochip_by_node(gpiospec.np);
+- chip = of_find_gpiochip_by_node(gpiospec.np);
++ chip = of_find_gpiochip_by_xlate(&gpiospec);
if (!chip) {
desc = ERR_PTR(-EPROBE_DEFER);
goto out;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
-index 2057683..892d60f 100644
+index 892d60f..2057683 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
-@@ -395,11 +395,8 @@ static int acp_hw_fini(void *handle)
+@@ -395,9 +395,12 @@ static int acp_hw_fini(void *handle)
{
int i, ret;
struct device *dev;
-- struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-
-- /* return early if no ACP */
-- if (!adev->acp.acp_genpd)
-- return 0;
-+ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+-
+ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
++ /* return early if no ACP */
++ if (!adev->acp.acp_genpd)
++ return 0;
++
for (i = 0; i < ACP_DEVS ; i++) {
dev = get_mfd_cell_dev(adev->acp.acp_cell[i].name, i);
+ ret = pm_genpd_remove_device(&adev->acp.acp_genpd->gpd, dev);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
-index 414a160..9aa533c 100644
+index 9aa533c..414a160 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
-@@ -605,7 +605,6 @@ static int __init amdgpu_init(void)
+@@ -605,6 +605,7 @@ static int __init amdgpu_init(void)
{
amdgpu_sync_init();
amdgpu_fence_slab_init();
-- amd_sched_fence_slab_init();
++ amd_sched_fence_slab_init();
if (vgacon_text_force()) {
DRM_ERROR("VGACON disables amdgpu kernel modesetting.\n");
return -EINVAL;
-@@ -625,7 +624,6 @@ static void __exit amdgpu_exit(void)
+@@ -624,6 +625,7 @@ static void __exit amdgpu_exit(void)
drm_pci_exit(driver, pdriver);
amdgpu_unregister_atpx_handler();
amdgpu_sync_fini();
-- amd_sched_fence_slab_fini();
++ amd_sched_fence_slab_fini();
amdgpu_fence_slab_fini();
}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
-index c82b95b8..0b109ae 100644
+index 0b109ae..c82b95b8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
-@@ -68,7 +68,6 @@ int amdgpu_fence_slab_init(void)
+@@ -68,6 +68,7 @@ int amdgpu_fence_slab_init(void)
void amdgpu_fence_slab_fini(void)
{
-- rcu_barrier();
++ rcu_barrier();
kmem_cache_destroy(amdgpu_fence_slab);
}
/*
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
-index 1ed64ae..e24a8af 100644
+index e24a8af..1ed64ae 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
-@@ -99,8 +99,6 @@ int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags)
+@@ -99,6 +99,8 @@ int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags)
if ((amdgpu_runtime_pm != 0) &&
amdgpu_has_atpx() &&
-- (amdgpu_is_atpx_hybrid() ||
-- amdgpu_has_atpx_dgpu_power_cntl()) &&
++ (amdgpu_is_atpx_hybrid() ||
++ amdgpu_has_atpx_dgpu_power_cntl()) &&
((flags & AMD_IS_APU) == 0))
flags |= AMD_IS_PX;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-index e86ca39..80120fa 100644
+index 80120fa..e86ca39 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-@@ -1654,6 +1654,5 @@ void amdgpu_vm_manager_fini(struct amdgpu_device *adev)
+@@ -1654,5 +1654,6 @@ void amdgpu_vm_manager_fini(struct amdgpu_device *adev)
fence_put(adev->vm_manager.ids[i].first);
amdgpu_sync_free(&adev->vm_manager.ids[i].active);
fence_put(id->flushed_updates);
-- fence_put(id->last_flush);
++ fence_put(id->last_flush);
}
}
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
-index ffe1f85..963a24d 100644
+index 963a24d..ffe1f85 100644
--- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
+++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
-@@ -34,6 +34,9 @@ static bool amd_sched_entity_is_ready(struct amd_sched_entity *entity);
+@@ -34,9 +34,6 @@ static bool amd_sched_entity_is_ready(struct amd_sched_entity *entity);
static void amd_sched_wakeup(struct amd_gpu_scheduler *sched);
static void amd_sched_process_job(struct fence *f, struct fence_cb *cb);
-+struct kmem_cache *sched_fence_slab;
-+atomic_t sched_fence_slab_ref = ATOMIC_INIT(0);
-+
+-struct kmem_cache *sched_fence_slab;
+-atomic_t sched_fence_slab_ref = ATOMIC_INIT(0);
+-
/* Initialize a given run queue struct */
static void amd_sched_rq_init(struct amd_sched_rq *rq)
{
-@@ -615,6 +618,13 @@ int amd_sched_init(struct amd_gpu_scheduler *sched,
+@@ -618,13 +615,6 @@ int amd_sched_init(struct amd_gpu_scheduler *sched,
INIT_LIST_HEAD(&sched->ring_mirror_list);
spin_lock_init(&sched->job_list_lock);
atomic_set(&sched->hw_rq_count, 0);
-+ if (atomic_inc_return(&sched_fence_slab_ref) == 1) {
-+ sched_fence_slab = kmem_cache_create(
-+ "amd_sched_fence", sizeof(struct amd_sched_fence), 0,
-+ SLAB_HWCACHE_ALIGN, NULL);
-+ if (!sched_fence_slab)
-+ return -ENOMEM;
-+ }
+- if (atomic_inc_return(&sched_fence_slab_ref) == 1) {
+- sched_fence_slab = kmem_cache_create(
+- "amd_sched_fence", sizeof(struct amd_sched_fence), 0,
+- SLAB_HWCACHE_ALIGN, NULL);
+- if (!sched_fence_slab)
+- return -ENOMEM;
+- }
/* Each scheduler will run on a seperate kernel thread */
sched->thread = kthread_run(amd_sched_main, sched, sched->name);
-@@ -635,4 +645,6 @@ void amd_sched_fini(struct amd_gpu_scheduler *sched)
+@@ -645,6 +635,4 @@ void amd_sched_fini(struct amd_gpu_scheduler *sched)
{
if (sched->thread)
kthread_stop(sched->thread);
-+ if (atomic_dec_and_test(&sched_fence_slab_ref))
-+ kmem_cache_destroy(sched_fence_slab);
+- if (atomic_dec_and_test(&sched_fence_slab_ref))
+- kmem_cache_destroy(sched_fence_slab);
}
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
-index 51068e6..7cbbbfb 100644
+index 7cbbbfb..51068e6 100644
--- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
+++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
-@@ -30,6 +30,9 @@
+@@ -30,9 +30,6 @@
struct amd_gpu_scheduler;
struct amd_sched_rq;
-+extern struct kmem_cache *sched_fence_slab;
-+extern atomic_t sched_fence_slab_ref;
-+
+-extern struct kmem_cache *sched_fence_slab;
+-extern atomic_t sched_fence_slab_ref;
+-
/**
* A scheduler entity is a wrapper around a job queue or a group
* of other entities. Entities take turns emitting jobs from their
-@@ -142,9 +145,6 @@ void amd_sched_entity_fini(struct amd_gpu_scheduler *sched,
+@@ -145,6 +142,9 @@ void amd_sched_entity_fini(struct amd_gpu_scheduler *sched,
struct amd_sched_entity *entity);
void amd_sched_entity_push_job(struct amd_sched_job *sched_job);
--int amd_sched_fence_slab_init(void);
--void amd_sched_fence_slab_fini(void);
--
++int amd_sched_fence_slab_init(void);
++void amd_sched_fence_slab_fini(void);
++
struct amd_sched_fence *amd_sched_fence_create(
struct amd_sched_entity *s_entity, void *owner);
void amd_sched_fence_scheduled(struct amd_sched_fence *fence);
diff --git a/drivers/gpu/drm/amd/scheduler/sched_fence.c b/drivers/gpu/drm/amd/scheduler/sched_fence.c
-index 93ad2e1..6b63bea 100644
+index 6b63bea..93ad2e1 100644
--- a/drivers/gpu/drm/amd/scheduler/sched_fence.c
+++ b/drivers/gpu/drm/amd/scheduler/sched_fence.c
-@@ -27,25 +27,6 @@
+@@ -27,6 +27,25 @@
#include <drm/drmP.h>
#include "gpu_scheduler.h"
--static struct kmem_cache *sched_fence_slab;
--
--int amd_sched_fence_slab_init(void)
--{
-- sched_fence_slab = kmem_cache_create(
-- "amd_sched_fence", sizeof(struct amd_sched_fence), 0,
-- SLAB_HWCACHE_ALIGN, NULL);
-- if (!sched_fence_slab)
-- return -ENOMEM;
--
-- return 0;
--}
--
--void amd_sched_fence_slab_fini(void)
--{
-- rcu_barrier();
-- kmem_cache_destroy(sched_fence_slab);
--}
--
++static struct kmem_cache *sched_fence_slab;
++
++int amd_sched_fence_slab_init(void)
++{
++ sched_fence_slab = kmem_cache_create(
++ "amd_sched_fence", sizeof(struct amd_sched_fence), 0,
++ SLAB_HWCACHE_ALIGN, NULL);
++ if (!sched_fence_slab)
++ return -ENOMEM;
++
++ return 0;
++}
++
++void amd_sched_fence_slab_fini(void)
++{
++ rcu_barrier();
++ kmem_cache_destroy(sched_fence_slab);
++}
++
struct amd_sched_fence *amd_sched_fence_create(struct amd_sched_entity *entity,
void *owner)
{
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
-index d46fa22..5de36d8 100644
+index 5de36d8..d46fa22 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
-@@ -1490,6 +1490,8 @@ static int i915_drm_suspend(struct drm_device *dev)
+@@ -1490,8 +1490,6 @@ static int i915_drm_suspend(struct drm_device *dev)
dev_priv->suspend_count++;
-+ intel_display_set_init_power(dev_priv, false);
-+
+- intel_display_set_init_power(dev_priv, false);
+-
intel_csr_ucode_suspend(dev_priv);
out:
-@@ -1506,8 +1508,6 @@ static int i915_drm_suspend_late(struct drm_device *drm_dev, bool hibernation)
+@@ -1508,6 +1506,8 @@ static int i915_drm_suspend_late(struct drm_device *drm_dev, bool hibernation)
disable_rpm_wakeref_asserts(dev_priv);
-- intel_display_set_init_power(dev_priv, false);
--
++ intel_display_set_init_power(dev_priv, false);
++
fw_csr = !IS_BROXTON(dev_priv) &&
suspend_to_idle(dev_priv) && dev_priv->csr.dmc_payload;
/*
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index e26f889..63462f2 100644
+index 63462f2..e26f889 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -9737,29 +9737,6 @@ static void bxt_modeset_commit_cdclk(struct drm_atomic_state *old_state)
+@@ -9737,6 +9737,29 @@ static void bxt_modeset_commit_cdclk(struct drm_atomic_state *old_state)
bxt_set_cdclk(to_i915(dev), req_cdclk);
}
--static int bdw_adjust_min_pipe_pixel_rate(struct intel_crtc_state *crtc_state,
-- int pixel_rate)
--{
-- struct drm_i915_private *dev_priv = to_i915(crtc_state->base.crtc->dev);
--
-- /* pixel rate mustn't exceed 95% of cdclk with IPS on BDW */
-- if (IS_BROADWELL(dev_priv) && crtc_state->ips_enabled)
-- pixel_rate = DIV_ROUND_UP(pixel_rate * 100, 95);
--
-- /* BSpec says "Do not use DisplayPort with CDCLK less than
-- * 432 MHz, audio enabled, port width x4, and link rate
-- * HBR2 (5.4 GHz), or else there may be audio corruption or
-- * screen corruption."
-- */
-- if (intel_crtc_has_dp_encoder(crtc_state) &&
-- crtc_state->has_audio &&
-- crtc_state->port_clock >= 540000 &&
-- crtc_state->lane_count == 4)
-- pixel_rate = max(432000, pixel_rate);
--
-- return pixel_rate;
--}
--
++static int bdw_adjust_min_pipe_pixel_rate(struct intel_crtc_state *crtc_state,
++ int pixel_rate)
++{
++ struct drm_i915_private *dev_priv = to_i915(crtc_state->base.crtc->dev);
++
++ /* pixel rate mustn't exceed 95% of cdclk with IPS on BDW */
++ if (IS_BROADWELL(dev_priv) && crtc_state->ips_enabled)
++ pixel_rate = DIV_ROUND_UP(pixel_rate * 100, 95);
++
++ /* BSpec says "Do not use DisplayPort with CDCLK less than
++ * 432 MHz, audio enabled, port width x4, and link rate
++ * HBR2 (5.4 GHz), or else there may be audio corruption or
++ * screen corruption."
++ */
++ if (intel_crtc_has_dp_encoder(crtc_state) &&
++ crtc_state->has_audio &&
++ crtc_state->port_clock >= 540000 &&
++ crtc_state->lane_count == 4)
++ pixel_rate = max(432000, pixel_rate);
++
++ return pixel_rate;
++}
++
/* compute the max rate for new configuration */
static int ilk_max_pixel_rate(struct drm_atomic_state *state)
{
-@@ -9785,9 +9762,9 @@ static int ilk_max_pixel_rate(struct drm_atomic_state *state)
+@@ -9762,9 +9785,9 @@ static int ilk_max_pixel_rate(struct drm_atomic_state *state)
pixel_rate = ilk_pipe_pixel_rate(crtc_state);
-- if (IS_BROADWELL(dev_priv) || IS_GEN9(dev_priv))
-- pixel_rate = bdw_adjust_min_pipe_pixel_rate(crtc_state,
-- pixel_rate);
-+ /* pixel rate mustn't exceed 95% of cdclk with IPS on BDW */
-+ if (IS_BROADWELL(dev_priv) && crtc_state->ips_enabled)
-+ pixel_rate = DIV_ROUND_UP(pixel_rate * 100, 95);
+- /* pixel rate mustn't exceed 95% of cdclk with IPS on BDW */
+- if (IS_BROADWELL(dev_priv) && crtc_state->ips_enabled)
+- pixel_rate = DIV_ROUND_UP(pixel_rate * 100, 95);
++ if (IS_BROADWELL(dev_priv) || IS_GEN9(dev_priv))
++ pixel_rate = bdw_adjust_min_pipe_pixel_rate(crtc_state,
++ pixel_rate);
intel_state->min_pixclk[i] = pixel_rate;
}
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
-index 1421270..c3aa9e6 100644
+index c3aa9e6..1421270 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
-@@ -1759,50 +1759,6 @@ intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *c
+@@ -1759,6 +1759,50 @@ intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *c
intel_hdmi->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
}
--static u8 intel_hdmi_ddc_pin(struct drm_i915_private *dev_priv,
-- enum port port)
--{
-- const struct ddi_vbt_port_info *info =
-- &dev_priv->vbt.ddi_port_info[port];
-- u8 ddc_pin;
--
-- if (info->alternate_ddc_pin) {
-- DRM_DEBUG_KMS("Using DDC pin 0x%x for port %c (VBT)\n",
-- info->alternate_ddc_pin, port_name(port));
-- return info->alternate_ddc_pin;
-- }
--
-- switch (port) {
-- case PORT_B:
-- if (IS_BROXTON(dev_priv))
-- ddc_pin = GMBUS_PIN_1_BXT;
-- else
-- ddc_pin = GMBUS_PIN_DPB;
-- break;
-- case PORT_C:
-- if (IS_BROXTON(dev_priv))
-- ddc_pin = GMBUS_PIN_2_BXT;
-- else
-- ddc_pin = GMBUS_PIN_DPC;
-- break;
-- case PORT_D:
-- if (IS_CHERRYVIEW(dev_priv))
-- ddc_pin = GMBUS_PIN_DPD_CHV;
-- else
-- ddc_pin = GMBUS_PIN_DPD;
-- break;
-- default:
-- MISSING_CASE(port);
-- ddc_pin = GMBUS_PIN_DPB;
-- break;
-- }
--
-- DRM_DEBUG_KMS("Using DDC pin 0x%x for port %c (platform default)\n",
-- ddc_pin, port_name(port));
--
-- return ddc_pin;
--}
--
++static u8 intel_hdmi_ddc_pin(struct drm_i915_private *dev_priv,
++ enum port port)
++{
++ const struct ddi_vbt_port_info *info =
++ &dev_priv->vbt.ddi_port_info[port];
++ u8 ddc_pin;
++
++ if (info->alternate_ddc_pin) {
++ DRM_DEBUG_KMS("Using DDC pin 0x%x for port %c (VBT)\n",
++ info->alternate_ddc_pin, port_name(port));
++ return info->alternate_ddc_pin;
++ }
++
++ switch (port) {
++ case PORT_B:
++ if (IS_BROXTON(dev_priv))
++ ddc_pin = GMBUS_PIN_1_BXT;
++ else
++ ddc_pin = GMBUS_PIN_DPB;
++ break;
++ case PORT_C:
++ if (IS_BROXTON(dev_priv))
++ ddc_pin = GMBUS_PIN_2_BXT;
++ else
++ ddc_pin = GMBUS_PIN_DPC;
++ break;
++ case PORT_D:
++ if (IS_CHERRYVIEW(dev_priv))
++ ddc_pin = GMBUS_PIN_DPD_CHV;
++ else
++ ddc_pin = GMBUS_PIN_DPD;
++ break;
++ default:
++ MISSING_CASE(port);
++ ddc_pin = GMBUS_PIN_DPB;
++ break;
++ }
++
++ DRM_DEBUG_KMS("Using DDC pin 0x%x for port %c (platform default)\n",
++ ddc_pin, port_name(port));
++
++ return ddc_pin;
++}
++
void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
struct intel_connector *intel_connector)
{
-@@ -1812,6 +1768,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
+@@ -1768,7 +1812,6 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
struct drm_device *dev = intel_encoder->base.dev;
struct drm_i915_private *dev_priv = to_i915(dev);
enum port port = intel_dig_port->port;
-+ uint8_t alternate_ddc_pin;
+- uint8_t alternate_ddc_pin;
DRM_DEBUG_KMS("Adding HDMI connector on port %c\n",
port_name(port));
-@@ -1829,10 +1786,12 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
+@@ -1786,12 +1829,10 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
connector->doublescan_allowed = 0;
connector->stereo_allowed = 1;
-- intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
--
++ intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
++
switch (port) {
case PORT_B:
-+ if (IS_BROXTON(dev_priv))
-+ intel_hdmi->ddc_bus = GMBUS_PIN_1_BXT;
-+ else
-+ intel_hdmi->ddc_bus = GMBUS_PIN_DPB;
+- if (IS_BROXTON(dev_priv))
+- intel_hdmi->ddc_bus = GMBUS_PIN_1_BXT;
+- else
+- intel_hdmi->ddc_bus = GMBUS_PIN_DPB;
/*
* On BXT A0/A1, sw needs to activate DDIA HPD logic and
* interrupts to check the external panel connection.
-@@ -1843,17 +1802,46 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
+@@ -1802,46 +1843,17 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
intel_encoder->hpd_pin = HPD_PORT_B;
break;
case PORT_C:
-+ if (IS_BROXTON(dev_priv))
-+ intel_hdmi->ddc_bus = GMBUS_PIN_2_BXT;
-+ else
-+ intel_hdmi->ddc_bus = GMBUS_PIN_DPC;
+- if (IS_BROXTON(dev_priv))
+- intel_hdmi->ddc_bus = GMBUS_PIN_2_BXT;
+- else
+- intel_hdmi->ddc_bus = GMBUS_PIN_DPC;
intel_encoder->hpd_pin = HPD_PORT_C;
break;
case PORT_D:
-+ if (WARN_ON(IS_BROXTON(dev_priv)))
-+ intel_hdmi->ddc_bus = GMBUS_PIN_DISABLED;
-+ else if (IS_CHERRYVIEW(dev_priv))
-+ intel_hdmi->ddc_bus = GMBUS_PIN_DPD_CHV;
-+ else
-+ intel_hdmi->ddc_bus = GMBUS_PIN_DPD;
+- if (WARN_ON(IS_BROXTON(dev_priv)))
+- intel_hdmi->ddc_bus = GMBUS_PIN_DISABLED;
+- else if (IS_CHERRYVIEW(dev_priv))
+- intel_hdmi->ddc_bus = GMBUS_PIN_DPD_CHV;
+- else
+- intel_hdmi->ddc_bus = GMBUS_PIN_DPD;
intel_encoder->hpd_pin = HPD_PORT_D;
break;
case PORT_E:
-+ /* On SKL PORT E doesn't have seperate GMBUS pin
-+ * We rely on VBT to set a proper alternate GMBUS pin. */
-+ alternate_ddc_pin =
-+ dev_priv->vbt.ddi_port_info[PORT_E].alternate_ddc_pin;
-+ switch (alternate_ddc_pin) {
-+ case DDC_PIN_B:
-+ intel_hdmi->ddc_bus = GMBUS_PIN_DPB;
-+ break;
-+ case DDC_PIN_C:
-+ intel_hdmi->ddc_bus = GMBUS_PIN_DPC;
-+ break;
-+ case DDC_PIN_D:
-+ intel_hdmi->ddc_bus = GMBUS_PIN_DPD;
-+ break;
-+ default:
-+ MISSING_CASE(alternate_ddc_pin);
-+ }
+- /* On SKL PORT E doesn't have seperate GMBUS pin
+- * We rely on VBT to set a proper alternate GMBUS pin. */
+- alternate_ddc_pin =
+- dev_priv->vbt.ddi_port_info[PORT_E].alternate_ddc_pin;
+- switch (alternate_ddc_pin) {
+- case DDC_PIN_B:
+- intel_hdmi->ddc_bus = GMBUS_PIN_DPB;
+- break;
+- case DDC_PIN_C:
+- intel_hdmi->ddc_bus = GMBUS_PIN_DPC;
+- break;
+- case DDC_PIN_D:
+- intel_hdmi->ddc_bus = GMBUS_PIN_DPD;
+- break;
+- default:
+- MISSING_CASE(alternate_ddc_pin);
+- }
intel_encoder->hpd_pin = HPD_PORT_E;
break;
-+ case PORT_A:
-+ intel_encoder->hpd_pin = HPD_PORT_A;
-+ /* Internal port only for eDP. */
+- case PORT_A:
+- intel_encoder->hpd_pin = HPD_PORT_A;
+- /* Internal port only for eDP. */
default:
-- MISSING_CASE(port);
-- return;
-+ BUG();
+- BUG();
++ MISSING_CASE(port);
++ return;
}
if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
-index edd2d03..554ca71 100644
+index 554ca71..edd2d03 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
-@@ -104,14 +104,6 @@ static const char radeon_family_name[][16] = {
+@@ -104,6 +104,14 @@ static const char radeon_family_name[][16] = {
"LAST",
};
--#if defined(CONFIG_VGA_SWITCHEROO)
--bool radeon_has_atpx_dgpu_power_cntl(void);
--bool radeon_is_atpx_hybrid(void);
--#else
--static inline bool radeon_has_atpx_dgpu_power_cntl(void) { return false; }
--static inline bool radeon_is_atpx_hybrid(void) { return false; }
--#endif
--
++#if defined(CONFIG_VGA_SWITCHEROO)
++bool radeon_has_atpx_dgpu_power_cntl(void);
++bool radeon_is_atpx_hybrid(void);
++#else
++static inline bool radeon_has_atpx_dgpu_power_cntl(void) { return false; }
++static inline bool radeon_is_atpx_hybrid(void) { return false; }
++#endif
++
#define RADEON_PX_QUIRK_DISABLE_PX (1 << 0)
#define RADEON_PX_QUIRK_LONG_WAKEUP (1 << 1)
-@@ -168,11 +160,6 @@ static void radeon_device_handle_px_quirks(struct radeon_device *rdev)
+@@ -160,6 +168,11 @@ static void radeon_device_handle_px_quirks(struct radeon_device *rdev)
if (rdev->px_quirk_flags & RADEON_PX_QUIRK_DISABLE_PX)
rdev->flags &= ~RADEON_IS_PX;
--
-- /* disable PX is the system doesn't support dGPU power control or hybrid gfx */
-- if (!radeon_is_atpx_hybrid() &&
-- !radeon_has_atpx_dgpu_power_cntl())
-- rdev->flags &= ~RADEON_IS_PX;
++
++ /* disable PX is the system doesn't support dGPU power control or hybrid gfx */
++ if (!radeon_is_atpx_hybrid() &&
++ !radeon_has_atpx_dgpu_power_cntl())
++ rdev->flags &= ~RADEON_IS_PX;
}
/**
diff --git a/drivers/iio/accel/st_accel_core.c b/drivers/iio/accel/st_accel_core.c
-index ce69048..da3fb06 100644
+index da3fb06..ce69048 100644
--- a/drivers/iio/accel/st_accel_core.c
+++ b/drivers/iio/accel/st_accel_core.c
@@ -743,8 +743,8 @@ static int st_accel_read_raw(struct iio_dev *indio_dev,
return IIO_VAL_INT;
case IIO_CHAN_INFO_SCALE:
-- *val = adata->current_fullscale->gain / 1000000;
-- *val2 = adata->current_fullscale->gain % 1000000;
-+ *val = 0;
-+ *val2 = adata->current_fullscale->gain;
+- *val = 0;
+- *val2 = adata->current_fullscale->gain;
++ *val = adata->current_fullscale->gain / 1000000;
++ *val2 = adata->current_fullscale->gain % 1000000;
return IIO_VAL_INT_PLUS_MICRO;
case IIO_CHAN_INFO_SAMP_FREQ:
*val = adata->odr;
-@@ -763,13 +763,9 @@ static int st_accel_write_raw(struct iio_dev *indio_dev,
+@@ -763,9 +763,13 @@ static int st_accel_write_raw(struct iio_dev *indio_dev,
int err;
switch (mask) {
-- case IIO_CHAN_INFO_SCALE: {
-- int gain;
--
-- gain = val * 1000000 + val2;
-- err = st_sensors_set_fullscale_by_gain(indio_dev, gain);
-+ case IIO_CHAN_INFO_SCALE:
-+ err = st_sensors_set_fullscale_by_gain(indio_dev, val2);
+- case IIO_CHAN_INFO_SCALE:
+- err = st_sensors_set_fullscale_by_gain(indio_dev, val2);
++ case IIO_CHAN_INFO_SCALE: {
++ int gain;
++
++ gain = val * 1000000 + val2;
++ err = st_sensors_set_fullscale_by_gain(indio_dev, gain);
break;
-- }
++ }
case IIO_CHAN_INFO_SAMP_FREQ:
if (val2)
return -EINVAL;
diff --git a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
-index b5beea53..dc33c1d 100644
+index dc33c1d..b5beea53 100644
--- a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
+++ b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
@@ -30,26 +30,26 @@ static struct {
u32 usage_id;
int unit; /* 0 for default others from HID sensor spec */
int scale_val0; /* scale, whole number */
-- int scale_val1; /* scale, fraction in nanos */
-+ int scale_val1; /* scale, fraction in micros */
+- int scale_val1; /* scale, fraction in micros */
++ int scale_val1; /* scale, fraction in nanos */
} unit_conversion[] = {
-- {HID_USAGE_SENSOR_ACCEL_3D, 0, 9, 806650000},
-+ {HID_USAGE_SENSOR_ACCEL_3D, 0, 9, 806650},
+- {HID_USAGE_SENSOR_ACCEL_3D, 0, 9, 806650},
++ {HID_USAGE_SENSOR_ACCEL_3D, 0, 9, 806650000},
{HID_USAGE_SENSOR_ACCEL_3D,
HID_USAGE_SENSOR_UNITS_METERS_PER_SEC_SQRD, 1, 0},
{HID_USAGE_SENSOR_ACCEL_3D,
-- HID_USAGE_SENSOR_UNITS_G, 9, 806650000},
-+ HID_USAGE_SENSOR_UNITS_G, 9, 806650},
+- HID_USAGE_SENSOR_UNITS_G, 9, 806650},
++ HID_USAGE_SENSOR_UNITS_G, 9, 806650000},
-- {HID_USAGE_SENSOR_GYRO_3D, 0, 0, 17453293},
-+ {HID_USAGE_SENSOR_GYRO_3D, 0, 0, 17453},
+- {HID_USAGE_SENSOR_GYRO_3D, 0, 0, 17453},
++ {HID_USAGE_SENSOR_GYRO_3D, 0, 0, 17453293},
{HID_USAGE_SENSOR_GYRO_3D,
HID_USAGE_SENSOR_UNITS_RADIANS_PER_SECOND, 1, 0},
{HID_USAGE_SENSOR_GYRO_3D,
-- HID_USAGE_SENSOR_UNITS_DEGREES_PER_SECOND, 0, 17453293},
-+ HID_USAGE_SENSOR_UNITS_DEGREES_PER_SECOND, 0, 17453},
+- HID_USAGE_SENSOR_UNITS_DEGREES_PER_SECOND, 0, 17453},
++ HID_USAGE_SENSOR_UNITS_DEGREES_PER_SECOND, 0, 17453293},
-- {HID_USAGE_SENSOR_COMPASS_3D, 0, 0, 1000000},
-+ {HID_USAGE_SENSOR_COMPASS_3D, 0, 0, 1000},
+- {HID_USAGE_SENSOR_COMPASS_3D, 0, 0, 1000},
++ {HID_USAGE_SENSOR_COMPASS_3D, 0, 0, 1000000},
{HID_USAGE_SENSOR_COMPASS_3D, HID_USAGE_SENSOR_UNITS_GAUSS, 1, 0},
-- {HID_USAGE_SENSOR_INCLINOMETER_3D, 0, 0, 17453293},
-+ {HID_USAGE_SENSOR_INCLINOMETER_3D, 0, 0, 17453},
+- {HID_USAGE_SENSOR_INCLINOMETER_3D, 0, 0, 17453},
++ {HID_USAGE_SENSOR_INCLINOMETER_3D, 0, 0, 17453293},
{HID_USAGE_SENSOR_INCLINOMETER_3D,
-- HID_USAGE_SENSOR_UNITS_DEGREES, 0, 17453293},
-+ HID_USAGE_SENSOR_UNITS_DEGREES, 0, 17453},
+- HID_USAGE_SENSOR_UNITS_DEGREES, 0, 17453},
++ HID_USAGE_SENSOR_UNITS_DEGREES, 0, 17453293},
{HID_USAGE_SENSOR_INCLINOMETER_3D,
HID_USAGE_SENSOR_UNITS_RADIANS, 1, 0},
@@ -1194,8 +1195,8 @@ index b5beea53..dc33c1d 100644
{HID_USAGE_SENSOR_ALS, HID_USAGE_SENSOR_UNITS_LUX, 1, 0},
{HID_USAGE_SENSOR_PRESSURE, 0, 100, 0},
-- {HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL, 0, 1000000},
-+ {HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL, 0, 1000},
+- {HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL, 0, 1000},
++ {HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL, 0, 1000000},
};
static int pow_10(unsigned power)
@@ -1203,65 +1204,65 @@ index b5beea53..dc33c1d 100644
/*
* This fuction applies the unit exponent to the scale.
* For example:
-- * 9.806650000 ->exp:2-> val0[980]val1[665000000]
-- * 9.000806000 ->exp:2-> val0[900]val1[80600000]
-- * 0.174535293 ->exp:2-> val0[17]val1[453529300]
-- * 1.001745329 ->exp:0-> val0[1]val1[1745329]
-- * 1.001745329 ->exp:2-> val0[100]val1[174532900]
-- * 1.001745329 ->exp:4-> val0[10017]val1[453290000]
-- * 9.806650000 ->exp:-2-> val0[0]val1[98066500]
-+ * 9.806650 ->exp:2-> val0[980]val1[665000]
-+ * 9.000806 ->exp:2-> val0[900]val1[80600]
-+ * 0.174535 ->exp:2-> val0[17]val1[453500]
-+ * 1.001745 ->exp:0-> val0[1]val1[1745]
-+ * 1.001745 ->exp:2-> val0[100]val1[174500]
-+ * 1.001745 ->exp:4-> val0[10017]val1[450000]
-+ * 9.806650 ->exp:-2-> val0[0]val1[98066]
+- * 9.806650 ->exp:2-> val0[980]val1[665000]
+- * 9.000806 ->exp:2-> val0[900]val1[80600]
+- * 0.174535 ->exp:2-> val0[17]val1[453500]
+- * 1.001745 ->exp:0-> val0[1]val1[1745]
+- * 1.001745 ->exp:2-> val0[100]val1[174500]
+- * 1.001745 ->exp:4-> val0[10017]val1[450000]
+- * 9.806650 ->exp:-2-> val0[0]val1[98066]
++ * 9.806650000 ->exp:2-> val0[980]val1[665000000]
++ * 9.000806000 ->exp:2-> val0[900]val1[80600000]
++ * 0.174535293 ->exp:2-> val0[17]val1[453529300]
++ * 1.001745329 ->exp:0-> val0[1]val1[1745329]
++ * 1.001745329 ->exp:2-> val0[100]val1[174532900]
++ * 1.001745329 ->exp:4-> val0[10017]val1[453290000]
++ * 9.806650000 ->exp:-2-> val0[0]val1[98066500]
*/
--static void adjust_exponent_nano(int *val0, int *val1, int scale0,
-+static void adjust_exponent_micro(int *val0, int *val1, int scale0,
+-static void adjust_exponent_micro(int *val0, int *val1, int scale0,
++static void adjust_exponent_nano(int *val0, int *val1, int scale0,
int scale1, int exp)
{
int i;
-@@ -285,32 +285,32 @@ static void adjust_exponent_nano(int *val0, int *val1, int scale0,
+@@ -285,32 +285,32 @@ static void adjust_exponent_micro(int *val0, int *val1, int scale0,
if (exp > 0) {
*val0 = scale0 * pow_10(exp);
res = 0;
-- if (exp > 9) {
-+ if (exp > 6) {
+- if (exp > 6) {
++ if (exp > 9) {
*val1 = 0;
return;
}
for (i = 0; i < exp; ++i) {
-- x = scale1 / pow_10(8 - i);
-+ x = scale1 / pow_10(5 - i);
+- x = scale1 / pow_10(5 - i);
++ x = scale1 / pow_10(8 - i);
res += (pow_10(exp - 1 - i) * x);
-- scale1 = scale1 % pow_10(8 - i);
-+ scale1 = scale1 % pow_10(5 - i);
+- scale1 = scale1 % pow_10(5 - i);
++ scale1 = scale1 % pow_10(8 - i);
}
*val0 += res;
*val1 = scale1 * pow_10(exp);
} else if (exp < 0) {
exp = abs(exp);
-- if (exp > 9) {
-+ if (exp > 6) {
+- if (exp > 6) {
++ if (exp > 9) {
*val0 = *val1 = 0;
return;
}
*val0 = scale0 / pow_10(exp);
rem = scale0 % pow_10(exp);
res = 0;
-- for (i = 0; i < (9 - exp); ++i) {
-- x = scale1 / pow_10(8 - i);
-- res += (pow_10(8 - exp - i) * x);
-- scale1 = scale1 % pow_10(8 - i);
-+ for (i = 0; i < (6 - exp); ++i) {
-+ x = scale1 / pow_10(5 - i);
-+ res += (pow_10(5 - exp - i) * x);
-+ scale1 = scale1 % pow_10(5 - i);
+- for (i = 0; i < (6 - exp); ++i) {
+- x = scale1 / pow_10(5 - i);
+- res += (pow_10(5 - exp - i) * x);
+- scale1 = scale1 % pow_10(5 - i);
++ for (i = 0; i < (9 - exp); ++i) {
++ x = scale1 / pow_10(8 - i);
++ res += (pow_10(8 - exp - i) * x);
++ scale1 = scale1 % pow_10(8 - i);
}
-- *val1 = rem * pow_10(9 - exp) + res;
-+ *val1 = rem * pow_10(6 - exp) + res;
+- *val1 = rem * pow_10(6 - exp) + res;
++ *val1 = rem * pow_10(9 - exp) + res;
} else {
*val0 = scale0;
*val1 = scale1;
@@ -1269,459 +1270,459 @@ index b5beea53..dc33c1d 100644
unit_conversion[i].unit == attr_info->units) {
exp = hid_sensor_convert_exponent(
attr_info->unit_expo);
-- adjust_exponent_nano(val0, val1,
-+ adjust_exponent_micro(val0, val1,
+- adjust_exponent_micro(val0, val1,
++ adjust_exponent_nano(val0, val1,
unit_conversion[i].scale_val0,
unit_conversion[i].scale_val1, exp);
break;
}
}
-- return IIO_VAL_INT_PLUS_NANO;
-+ return IIO_VAL_INT_PLUS_MICRO;
+- return IIO_VAL_INT_PLUS_MICRO;
++ return IIO_VAL_INT_PLUS_NANO;
}
EXPORT_SYMBOL(hid_sensor_format_scale);
diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/common/st_sensors/st_sensors_core.c
-index 32a5946..2d5282e 100644
+index 2d5282e..32a5946 100644
--- a/drivers/iio/common/st_sensors/st_sensors_core.c
+++ b/drivers/iio/common/st_sensors/st_sensors_core.c
@@ -619,7 +619,7 @@ EXPORT_SYMBOL(st_sensors_sysfs_sampling_frequency_avail);
ssize_t st_sensors_sysfs_scale_avail(struct device *dev,
struct device_attribute *attr, char *buf)
{
-- int i, len = 0, q, r;
-+ int i, len = 0;
+- int i, len = 0;
++ int i, len = 0, q, r;
struct iio_dev *indio_dev = dev_get_drvdata(dev);
struct st_sensor_data *sdata = iio_priv(indio_dev);
-@@ -628,10 +628,8 @@ ssize_t st_sensors_sysfs_scale_avail(struct device *dev,
+@@ -628,8 +628,10 @@ ssize_t st_sensors_sysfs_scale_avail(struct device *dev,
if (sdata->sensor_settings->fs.fs_avl[i].num == 0)
break;
-- q = sdata->sensor_settings->fs.fs_avl[i].gain / 1000000;
-- r = sdata->sensor_settings->fs.fs_avl[i].gain % 1000000;
--
-- len += scnprintf(buf + len, PAGE_SIZE - len, "%u.%06u ", q, r);
-+ len += scnprintf(buf + len, PAGE_SIZE - len, "0.%06u ",
-+ sdata->sensor_settings->fs.fs_avl[i].gain);
+- len += scnprintf(buf + len, PAGE_SIZE - len, "0.%06u ",
+- sdata->sensor_settings->fs.fs_avl[i].gain);
++ q = sdata->sensor_settings->fs.fs_avl[i].gain / 1000000;
++ r = sdata->sensor_settings->fs.fs_avl[i].gain % 1000000;
++
++ len += scnprintf(buf + len, PAGE_SIZE - len, "%u.%06u ", q, r);
}
mutex_unlock(&indio_dev->mlock);
buf[len - 1] = '\n';
diff --git a/drivers/iio/orientation/hid-sensor-rotation.c b/drivers/iio/orientation/hid-sensor-rotation.c
-index a97e802c..b98b9d9 100644
+index b98b9d9..a97e802c 100644
--- a/drivers/iio/orientation/hid-sensor-rotation.c
+++ b/drivers/iio/orientation/hid-sensor-rotation.c
-@@ -335,7 +335,6 @@ static struct platform_driver hid_dev_rot_platform_driver = {
+@@ -335,6 +335,7 @@ static struct platform_driver hid_dev_rot_platform_driver = {
.id_table = hid_dev_rot_ids,
.driver = {
.name = KBUILD_MODNAME,
-- .pm = &hid_sensor_pm_ops,
++ .pm = &hid_sensor_pm_ops,
},
.probe = hid_dev_rot_probe,
.remove = hid_dev_rot_remove,
diff --git a/drivers/input/rmi4/rmi_i2c.c b/drivers/input/rmi4/rmi_i2c.c
-index 1ebc2c1..6f2e0e4 100644
+index 6f2e0e4..1ebc2c1 100644
--- a/drivers/input/rmi4/rmi_i2c.c
+++ b/drivers/input/rmi4/rmi_i2c.c
-@@ -221,21 +221,6 @@ static const struct of_device_id rmi_i2c_of_match[] = {
+@@ -221,6 +221,21 @@ static const struct of_device_id rmi_i2c_of_match[] = {
MODULE_DEVICE_TABLE(of, rmi_i2c_of_match);
#endif
--static void rmi_i2c_regulator_bulk_disable(void *data)
--{
-- struct rmi_i2c_xport *rmi_i2c = data;
--
-- regulator_bulk_disable(ARRAY_SIZE(rmi_i2c->supplies),
-- rmi_i2c->supplies);
--}
--
--static void rmi_i2c_unregister_transport(void *data)
--{
-- struct rmi_i2c_xport *rmi_i2c = data;
--
-- rmi_unregister_transport_device(&rmi_i2c->xport);
--}
--
++static void rmi_i2c_regulator_bulk_disable(void *data)
++{
++ struct rmi_i2c_xport *rmi_i2c = data;
++
++ regulator_bulk_disable(ARRAY_SIZE(rmi_i2c->supplies),
++ rmi_i2c->supplies);
++}
++
++static void rmi_i2c_unregister_transport(void *data)
++{
++ struct rmi_i2c_xport *rmi_i2c = data;
++
++ rmi_unregister_transport_device(&rmi_i2c->xport);
++}
++
static int rmi_i2c_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
-@@ -279,12 +264,6 @@ static int rmi_i2c_probe(struct i2c_client *client,
+@@ -264,6 +279,12 @@ static int rmi_i2c_probe(struct i2c_client *client,
if (retval < 0)
return retval;
-- retval = devm_add_action_or_reset(&client->dev,
-- rmi_i2c_regulator_bulk_disable,
-- rmi_i2c);
-- if (retval)
-- return retval;
--
++ retval = devm_add_action_or_reset(&client->dev,
++ rmi_i2c_regulator_bulk_disable,
++ rmi_i2c);
++ if (retval)
++ return retval;
++
of_property_read_u32(client->dev.of_node, "syna,startup-delay-ms",
&rmi_i2c->startup_delay);
-@@ -315,11 +294,6 @@ static int rmi_i2c_probe(struct i2c_client *client,
+@@ -294,6 +315,11 @@ static int rmi_i2c_probe(struct i2c_client *client,
client->addr);
return retval;
}
-- retval = devm_add_action_or_reset(&client->dev,
-- rmi_i2c_unregister_transport,
-- rmi_i2c);
-- if (retval)
-- return retval;
++ retval = devm_add_action_or_reset(&client->dev,
++ rmi_i2c_unregister_transport,
++ rmi_i2c);
++ if (retval)
++ return retval;
retval = rmi_i2c_init_irq(client);
if (retval < 0)
-@@ -330,6 +304,17 @@ static int rmi_i2c_probe(struct i2c_client *client,
+@@ -304,17 +330,6 @@ static int rmi_i2c_probe(struct i2c_client *client,
return 0;
}
-+static int rmi_i2c_remove(struct i2c_client *client)
-+{
-+ struct rmi_i2c_xport *rmi_i2c = i2c_get_clientdata(client);
-+
-+ rmi_unregister_transport_device(&rmi_i2c->xport);
-+ regulator_bulk_disable(ARRAY_SIZE(rmi_i2c->supplies),
-+ rmi_i2c->supplies);
-+
-+ return 0;
-+}
-+
+-static int rmi_i2c_remove(struct i2c_client *client)
+-{
+- struct rmi_i2c_xport *rmi_i2c = i2c_get_clientdata(client);
+-
+- rmi_unregister_transport_device(&rmi_i2c->xport);
+- regulator_bulk_disable(ARRAY_SIZE(rmi_i2c->supplies),
+- rmi_i2c->supplies);
+-
+- return 0;
+-}
+-
#ifdef CONFIG_PM_SLEEP
static int rmi_i2c_suspend(struct device *dev)
{
-@@ -446,6 +431,7 @@ static struct i2c_driver rmi_i2c_driver = {
+@@ -431,7 +446,6 @@ static struct i2c_driver rmi_i2c_driver = {
},
.id_table = rmi_id,
.probe = rmi_i2c_probe,
-+ .remove = rmi_i2c_remove,
+- .remove = rmi_i2c_remove,
};
module_i2c_driver(rmi_i2c_driver);
diff --git a/drivers/input/rmi4/rmi_spi.c b/drivers/input/rmi4/rmi_spi.c
-index 4ebef60..55bd1b3 100644
+index 55bd1b3..4ebef60 100644
--- a/drivers/input/rmi4/rmi_spi.c
+++ b/drivers/input/rmi4/rmi_spi.c
-@@ -396,13 +396,6 @@ static inline int rmi_spi_of_probe(struct spi_device *spi,
+@@ -396,6 +396,13 @@ static inline int rmi_spi_of_probe(struct spi_device *spi,
}
#endif
--static void rmi_spi_unregister_transport(void *data)
--{
-- struct rmi_spi_xport *rmi_spi = data;
--
-- rmi_unregister_transport_device(&rmi_spi->xport);
--}
--
++static void rmi_spi_unregister_transport(void *data)
++{
++ struct rmi_spi_xport *rmi_spi = data;
++
++ rmi_unregister_transport_device(&rmi_spi->xport);
++}
++
static int rmi_spi_probe(struct spi_device *spi)
{
struct rmi_spi_xport *rmi_spi;
-@@ -471,11 +464,6 @@ static int rmi_spi_probe(struct spi_device *spi)
+@@ -464,6 +471,11 @@ static int rmi_spi_probe(struct spi_device *spi)
dev_err(&spi->dev, "failed to register transport.\n");
return retval;
}
-- retval = devm_add_action_or_reset(&spi->dev,
-- rmi_spi_unregister_transport,
-- rmi_spi);
-- if (retval)
-- return retval;
++ retval = devm_add_action_or_reset(&spi->dev,
++ rmi_spi_unregister_transport,
++ rmi_spi);
++ if (retval)
++ return retval;
retval = rmi_spi_init_irq(spi);
if (retval < 0)
-@@ -485,6 +473,15 @@ static int rmi_spi_probe(struct spi_device *spi)
+@@ -473,15 +485,6 @@ static int rmi_spi_probe(struct spi_device *spi)
return 0;
}
-+static int rmi_spi_remove(struct spi_device *spi)
-+{
-+ struct rmi_spi_xport *rmi_spi = spi_get_drvdata(spi);
-+
-+ rmi_unregister_transport_device(&rmi_spi->xport);
-+
-+ return 0;
-+}
-+
+-static int rmi_spi_remove(struct spi_device *spi)
+-{
+- struct rmi_spi_xport *rmi_spi = spi_get_drvdata(spi);
+-
+- rmi_unregister_transport_device(&rmi_spi->xport);
+-
+- return 0;
+-}
+-
#ifdef CONFIG_PM_SLEEP
static int rmi_spi_suspend(struct device *dev)
{
-@@ -580,6 +577,7 @@ static struct spi_driver rmi_spi_driver = {
+@@ -577,7 +580,6 @@ static struct spi_driver rmi_spi_driver = {
},
.id_table = rmi_id,
.probe = rmi_spi_probe,
-+ .remove = rmi_spi_remove,
+- .remove = rmi_spi_remove,
};
module_spi_driver(rmi_spi_driver);
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
-index 822fc4a..96de97a 100644
+index 96de97a..822fc4a 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
-@@ -1654,9 +1654,6 @@ static void dma_ops_domain_free(struct dma_ops_domain *dom)
+@@ -1654,6 +1654,9 @@ static void dma_ops_domain_free(struct dma_ops_domain *dom)
free_pagetable(&dom->domain);
-- if (dom->domain.id)
-- domain_id_free(dom->domain.id);
--
++ if (dom->domain.id)
++ domain_id_free(dom->domain.id);
++
kfree(dom);
}
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
-index 1257b0b..ebb5bf3 100644
+index ebb5bf3..1257b0b 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
-@@ -1711,7 +1711,6 @@ static void disable_dmar_iommu(struct intel_iommu *iommu)
+@@ -1711,6 +1711,7 @@ static void disable_dmar_iommu(struct intel_iommu *iommu)
if (!iommu->domains || !iommu->domain_ids)
return;
--again:
++again:
spin_lock_irqsave(&device_domain_lock, flags);
list_for_each_entry_safe(info, tmp, &device_domain_list, global) {
struct dmar_domain *domain;
-@@ -1724,19 +1723,10 @@ static void disable_dmar_iommu(struct intel_iommu *iommu)
+@@ -1723,10 +1724,19 @@ static void disable_dmar_iommu(struct intel_iommu *iommu)
domain = info->domain;
-- __dmar_remove_one_dev_info(info);
-+ dmar_remove_one_dev_info(domain, info->dev);
-
-- if (!domain_type_is_vm_or_si(domain)) {
-- /*
-- * The domain_exit() function can't be called under
-- * device_domain_lock, as it takes this lock itself.
-- * So release the lock here and re-run the loop
-- * afterwards.
-- */
-- spin_unlock_irqrestore(&device_domain_lock, flags);
-+ if (!domain_type_is_vm_or_si(domain))
+- dmar_remove_one_dev_info(domain, info->dev);
++ __dmar_remove_one_dev_info(info);
+
+- if (!domain_type_is_vm_or_si(domain))
++ if (!domain_type_is_vm_or_si(domain)) {
++ /*
++ * The domain_exit() function can't be called under
++ * device_domain_lock, as it takes this lock itself.
++ * So release the lock here and re-run the loop
++ * afterwards.
++ */
++ spin_unlock_irqrestore(&device_domain_lock, flags);
domain_exit(domain);
-- goto again;
-- }
++ goto again;
++ }
}
spin_unlock_irqrestore(&device_domain_lock, flags);
diff --git a/drivers/iommu/io-pgtable-arm-v7s.c b/drivers/iommu/io-pgtable-arm-v7s.c
-index f50e51c..def8ca1 100644
+index def8ca1..f50e51c 100644
--- a/drivers/iommu/io-pgtable-arm-v7s.c
+++ b/drivers/iommu/io-pgtable-arm-v7s.c
-@@ -633,10 +633,6 @@ static struct io_pgtable *arm_v7s_alloc_pgtable(struct io_pgtable_cfg *cfg,
+@@ -633,6 +633,10 @@ static struct io_pgtable *arm_v7s_alloc_pgtable(struct io_pgtable_cfg *cfg,
{
struct arm_v7s_io_pgtable *data;
--#ifdef PHYS_OFFSET
-- if (upper_32_bits(PHYS_OFFSET))
-- return NULL;
--#endif
++#ifdef PHYS_OFFSET
++ if (upper_32_bits(PHYS_OFFSET))
++ return NULL;
++#endif
if (cfg->ias > ARM_V7S_ADDR_BITS || cfg->oas > ARM_V7S_ADDR_BITS)
return NULL;
diff --git a/drivers/media/usb/dvb-usb/dib0700_core.c b/drivers/media/usb/dvb-usb/dib0700_core.c
-index f73e108..bf890c3 100644
+index bf890c3..f73e108 100644
--- a/drivers/media/usb/dvb-usb/dib0700_core.c
+++ b/drivers/media/usb/dvb-usb/dib0700_core.c
@@ -677,7 +677,7 @@ static void dib0700_rc_urb_completion(struct urb *purb)
struct dvb_usb_device *d = purb->context;
struct dib0700_rc_response *poll_reply;
enum rc_type protocol;
-- u32 keycode;
-+ u32 uninitialized_var(keycode);
+- u32 uninitialized_var(keycode);
++ u32 keycode;
u8 toggle;
deb_info("%s()\n", __func__);
-@@ -719,8 +719,7 @@ static void dib0700_rc_urb_completion(struct urb *purb)
+@@ -719,7 +719,8 @@ static void dib0700_rc_urb_completion(struct urb *purb)
poll_reply->nec.data == 0x00 &&
poll_reply->nec.not_data == 0xff) {
poll_reply->data_state = 2;
-- rc_repeat(d->rc_dev);
-- goto resubmit;
-+ break;
+- break;
++ rc_repeat(d->rc_dev);
++ goto resubmit;
}
if ((poll_reply->nec.data ^ poll_reply->nec.not_data) != 0xff) {
diff --git a/drivers/misc/mei/bus-fixup.c b/drivers/misc/mei/bus-fixup.c
-index 75b9d4a..e9e6ea3 100644
+index e9e6ea3..75b9d4a 100644
--- a/drivers/misc/mei/bus-fixup.c
+++ b/drivers/misc/mei/bus-fixup.c
@@ -178,7 +178,7 @@ static int mei_nfc_if_version(struct mei_cl *cl,
ret = 0;
bytes_recv = __mei_cl_recv(cl, (u8 *)reply, if_version_length);
-- if (bytes_recv < if_version_length) {
-+ if (bytes_recv < 0 || bytes_recv < sizeof(struct mei_nfc_reply)) {
+- if (bytes_recv < 0 || bytes_recv < sizeof(struct mei_nfc_reply)) {
++ if (bytes_recv < if_version_length) {
dev_err(bus->dev, "Could not read IF version\n");
ret = -EIO;
goto err;
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
-index 6ef1e3c..c57eb32 100644
+index c57eb32..6ef1e3c 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
-@@ -26,8 +26,6 @@
+@@ -26,6 +26,8 @@
#include "mmc_ops.h"
#include "sd_ops.h"
--#define DEFAULT_CMD6_TIMEOUT_MS 500
--
++#define DEFAULT_CMD6_TIMEOUT_MS 500
++
static const unsigned int tran_exp[] = {
10000, 100000, 1000000, 10000000,
0, 0, 0, 0
-@@ -573,7 +571,6 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd)
+@@ -571,6 +573,7 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd)
card->erased_byte = 0x0;
/* eMMC v4.5 or later */
-- card->ext_csd.generic_cmd6_time = DEFAULT_CMD6_TIMEOUT_MS;
++ card->ext_csd.generic_cmd6_time = DEFAULT_CMD6_TIMEOUT_MS;
if (card->ext_csd.rev >= 6) {
card->ext_csd.feature_support |= MMC_DISCARD_FEATURE;
diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
-index 44ecebd..d839147 100644
+index d839147..44ecebd 100644
--- a/drivers/mmc/host/mxs-mmc.c
+++ b/drivers/mmc/host/mxs-mmc.c
@@ -661,13 +661,13 @@ static int mxs_mmc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, mmc);
-- spin_lock_init(&host->lock);
--
++ spin_lock_init(&host->lock);
++
ret = devm_request_irq(&pdev->dev, irq_err, mxs_mmc_irq_handler, 0,
dev_name(&pdev->dev), host);
if (ret)
goto out_free_dma;
-+ spin_lock_init(&host->lock);
-+
+- spin_lock_init(&host->lock);
+-
ret = mmc_add_host(mmc);
if (ret)
goto out_free_dma;
diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
-index 90ed2e1..8ef44a2a 100644
+index 8ef44a2a..90ed2e1 100644
--- a/drivers/mmc/host/sdhci-msm.c
+++ b/drivers/mmc/host/sdhci-msm.c
-@@ -647,7 +647,6 @@ static int sdhci_msm_probe(struct platform_device *pdev)
+@@ -647,6 +647,7 @@ static int sdhci_msm_probe(struct platform_device *pdev)
if (msm_host->pwr_irq < 0) {
dev_err(&pdev->dev, "Get pwr_irq failed (%d)\n",
msm_host->pwr_irq);
-- ret = msm_host->pwr_irq;
++ ret = msm_host->pwr_irq;
goto clk_disable;
}
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
-index 6eb8f07..a8a022a 100644
+index a8a022a..6eb8f07 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
-@@ -2269,8 +2269,10 @@ static bool sdhci_request_done(struct sdhci_host *host)
+@@ -2269,10 +2269,8 @@ static bool sdhci_request_done(struct sdhci_host *host)
for (i = 0; i < SDHCI_MAX_MRQS; i++) {
mrq = host->mrqs_done[i];
-- if (mrq)
-+ if (mrq) {
-+ host->mrqs_done[i] = NULL;
+- if (mrq) {
+- host->mrqs_done[i] = NULL;
++ if (mrq)
break;
-+ }
+- }
}
if (!mrq) {
-@@ -2301,17 +2303,6 @@ static bool sdhci_request_done(struct sdhci_host *host)
+@@ -2303,6 +2301,17 @@ static bool sdhci_request_done(struct sdhci_host *host)
* upon error conditions.
*/
if (sdhci_needs_reset(host, mrq)) {
-- /*
-- * Do not finish until command and data lines are available for
-- * reset. Note there can only be one other mrq, so it cannot
-- * also be in mrqs_done, otherwise host->cmd and host->data_cmd
-- * would both be null.
-- */
-- if (host->cmd || host->data_cmd) {
-- spin_unlock_irqrestore(&host->lock, flags);
-- return true;
-- }
--
++ /*
++ * Do not finish until command and data lines are available for
++ * reset. Note there can only be one other mrq, so it cannot
++ * also be in mrqs_done, otherwise host->cmd and host->data_cmd
++ * would both be null.
++ */
++ if (host->cmd || host->data_cmd) {
++ spin_unlock_irqrestore(&host->lock, flags);
++ return true;
++ }
++
/* Some controllers need this kick or reset won't work here */
if (host->quirks & SDHCI_QUIRK_CLOCK_BEFORE_RESET)
/* This is to force an update */
-@@ -2319,8 +2310,10 @@ static bool sdhci_request_done(struct sdhci_host *host)
+@@ -2310,10 +2319,8 @@ static bool sdhci_request_done(struct sdhci_host *host)
/* Spec says we should do both at the same time, but Ricoh
controllers do not like that. */
-- sdhci_do_reset(host, SDHCI_RESET_CMD);
-- sdhci_do_reset(host, SDHCI_RESET_DATA);
-+ if (!host->cmd)
-+ sdhci_do_reset(host, SDHCI_RESET_CMD);
-+ if (!host->data_cmd)
-+ sdhci_do_reset(host, SDHCI_RESET_DATA);
+- if (!host->cmd)
+- sdhci_do_reset(host, SDHCI_RESET_CMD);
+- if (!host->data_cmd)
+- sdhci_do_reset(host, SDHCI_RESET_DATA);
++ sdhci_do_reset(host, SDHCI_RESET_CMD);
++ sdhci_do_reset(host, SDHCI_RESET_DATA);
host->pending_reset = false;
}
-@@ -2328,8 +2321,6 @@ static bool sdhci_request_done(struct sdhci_host *host)
+@@ -2321,6 +2328,8 @@ static bool sdhci_request_done(struct sdhci_host *host)
if (!sdhci_has_requests(host))
sdhci_led_deactivate(host);
-- host->mrqs_done[i] = NULL;
--
++ host->mrqs_done[i] = NULL;
++
mmiowb();
spin_unlock_irqrestore(&host->lock, flags);
-@@ -2509,6 +2500,9 @@ static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)
+@@ -2500,9 +2509,6 @@ static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)
if (!host->data) {
struct mmc_command *data_cmd = host->data_cmd;
-+ if (data_cmd)
-+ host->data_cmd = NULL;
-+
+- if (data_cmd)
+- host->data_cmd = NULL;
+-
/*
* The "data complete" interrupt is also used to
* indicate that a busy state has ended. See comment
-@@ -2516,13 +2510,11 @@ static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)
+@@ -2510,11 +2516,13 @@ static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)
*/
if (data_cmd && (data_cmd->flags & MMC_RSP_BUSY)) {
if (intmask & SDHCI_INT_DATA_TIMEOUT) {
-- host->data_cmd = NULL;
++ host->data_cmd = NULL;
data_cmd->error = -ETIMEDOUT;
sdhci_finish_mrq(host, data_cmd->mrq);
return;
}
if (intmask & SDHCI_INT_DATA_END) {
-- host->data_cmd = NULL;
++ host->data_cmd = NULL;
/*
* Some cards handle busy-end interrupt
* before the command completed, so make
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
-index 6b46a37..c74d164 100644
+index c74d164..6b46a37 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -9001,7 +9001,7 @@ static int i40e_ndo_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
return 0;
return ndo_dflt_bridge_getlink(skb, pid, seq, dev, veb->bridge_mode,
-- 0, 0, nlflags, filter_mask, NULL);
-+ nlflags, 0, 0, filter_mask, NULL);
+- nlflags, 0, 0, filter_mask, NULL);
++ 0, 0, nlflags, filter_mask, NULL);
}
/* Hardware supports L4 tunnel length of 128B (=2^7) which includes
diff --git a/drivers/nfc/mei_phy.c b/drivers/nfc/mei_phy.c
-index 6f9563a..83deda4 100644
+index 83deda4..6f9563a 100644
--- a/drivers/nfc/mei_phy.c
+++ b/drivers/nfc/mei_phy.c
@@ -133,7 +133,7 @@ static int mei_nfc_if_version(struct nfc_mei_phy *phy)
return -ENOMEM;
bytes_recv = mei_cldev_recv(phy->cldev, (u8 *)reply, if_version_length);
-- if (bytes_recv < 0 || bytes_recv < if_version_length) {
-+ if (bytes_recv < 0 || bytes_recv < sizeof(struct mei_nfc_reply)) {
+- if (bytes_recv < 0 || bytes_recv < sizeof(struct mei_nfc_reply)) {
++ if (bytes_recv < 0 || bytes_recv < if_version_length) {
pr_err("Could not read IF version\n");
r = -EIO;
goto err;
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
-index da134a0..60f7eab 100644
+index 60f7eab..da134a0 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -1531,9 +1531,9 @@ static int nvme_delete_queue(struct nvme_queue *nvmeq, u8 opcode)
return 0;
}
--static void nvme_disable_io_queues(struct nvme_dev *dev, int queues)
-+static void nvme_disable_io_queues(struct nvme_dev *dev)
+-static void nvme_disable_io_queues(struct nvme_dev *dev)
++static void nvme_disable_io_queues(struct nvme_dev *dev, int queues)
{
-- int pass;
-+ int pass, queues = dev->online_queues - 1;
+- int pass, queues = dev->online_queues - 1;
++ int pass;
unsigned long timeout;
u8 opcode = nvme_admin_delete_sq;
@@ -1729,1036 +1730,1036 @@ index da134a0..60f7eab 100644
static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown)
{
-- int i, queues;
-+ int i;
+- int i;
++ int i, queues;
u32 csts = -1;
del_timer_sync(&dev->watchdog_timer);
-@@ -1689,7 +1689,6 @@ static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown)
+@@ -1689,6 +1689,7 @@ static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown)
csts = readl(dev->bar + NVME_REG_CSTS);
}
-- queues = dev->online_queues - 1;
++ queues = dev->online_queues - 1;
for (i = dev->queue_count - 1; i > 0; i--)
nvme_suspend_queue(dev->queues[i]);
-@@ -1701,7 +1700,7 @@ static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown)
+@@ -1700,7 +1701,7 @@ static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown)
if (dev->queue_count)
nvme_suspend_queue(dev->queues[0]);
} else {
-- nvme_disable_io_queues(dev, queues);
-+ nvme_disable_io_queues(dev);
+- nvme_disable_io_queues(dev);
++ nvme_disable_io_queues(dev, queues);
nvme_disable_admin_queue(dev, shutdown);
}
nvme_pci_disable(dev);
diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c
-index 9526e34..66c4d8f 100644
+index 66c4d8f..9526e34 100644
--- a/drivers/pci/setup-res.c
+++ b/drivers/pci/setup-res.c
-@@ -121,14 +121,6 @@ int pci_claim_resource(struct pci_dev *dev, int resource)
+@@ -121,6 +121,14 @@ int pci_claim_resource(struct pci_dev *dev, int resource)
return -EINVAL;
}
-- /*
-- * If we have a shadow copy in RAM, the PCI device doesn't respond
-- * to the shadow range, so we don't need to claim it, and upstream
-- * bridges don't need to route the range to the device.
-- */
-- if (res->flags & IORESOURCE_ROM_SHADOW)
-- return 0;
--
++ /*
++ * If we have a shadow copy in RAM, the PCI device doesn't respond
++ * to the shadow range, so we don't need to claim it, and upstream
++ * bridges don't need to route the range to the device.
++ */
++ if (res->flags & IORESOURCE_ROM_SHADOW)
++ return 0;
++
root = pci_find_parent_resource(dev, res);
if (!root) {
dev_info(&dev->dev, "can't claim BAR %d %pR: no compatible bridge window\n",
diff --git a/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c b/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
-index 5d1e505c3..7f77007 100644
+index 7f77007..5d1e505c3 100644
--- a/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
@@ -844,6 +844,6 @@ static struct platform_driver iproc_gpio_driver = {
static int __init iproc_gpio_init(void)
{
-- return platform_driver_register(&iproc_gpio_driver);
-+ return platform_driver_probe(&iproc_gpio_driver, iproc_gpio_probe);
+- return platform_driver_probe(&iproc_gpio_driver, iproc_gpio_probe);
++ return platform_driver_register(&iproc_gpio_driver);
}
arch_initcall_sync(iproc_gpio_init);
diff --git a/drivers/pinctrl/bcm/pinctrl-nsp-gpio.c b/drivers/pinctrl/bcm/pinctrl-nsp-gpio.c
-index c8deb8b..35783db 100644
+index 35783db..c8deb8b 100644
--- a/drivers/pinctrl/bcm/pinctrl-nsp-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-nsp-gpio.c
@@ -741,6 +741,6 @@ static struct platform_driver nsp_gpio_driver = {
static int __init nsp_gpio_init(void)
{
-- return platform_driver_register(&nsp_gpio_driver);
-+ return platform_driver_probe(&nsp_gpio_driver, nsp_gpio_probe);
+- return platform_driver_probe(&nsp_gpio_driver, nsp_gpio_probe);
++ return platform_driver_register(&nsp_gpio_driver);
}
arch_initcall_sync(nsp_gpio_init);
diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c
-index bc31504..0fe8fad 100644
+index 0fe8fad..bc31504 100644
--- a/drivers/pinctrl/intel/pinctrl-cherryview.c
+++ b/drivers/pinctrl/intel/pinctrl-cherryview.c
-@@ -1634,15 +1634,12 @@ static int chv_pinctrl_remove(struct platform_device *pdev)
+@@ -1634,12 +1634,15 @@ static int chv_pinctrl_remove(struct platform_device *pdev)
}
#ifdef CONFIG_PM_SLEEP
--static int chv_pinctrl_suspend_noirq(struct device *dev)
-+static int chv_pinctrl_suspend(struct device *dev)
+-static int chv_pinctrl_suspend(struct device *dev)
++static int chv_pinctrl_suspend_noirq(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
struct chv_pinctrl *pctrl = platform_get_drvdata(pdev);
-- unsigned long flags;
++ unsigned long flags;
int i;
-- raw_spin_lock_irqsave(&chv_lock, flags);
--
++ raw_spin_lock_irqsave(&chv_lock, flags);
++
pctrl->saved_intmask = readl(pctrl->regs + CHV_INTMASK);
for (i = 0; i < pctrl->community->npins; i++) {
-@@ -1663,20 +1660,15 @@ static int chv_pinctrl_suspend_noirq(struct device *dev)
+@@ -1660,15 +1663,20 @@ static int chv_pinctrl_suspend(struct device *dev)
ctx->padctrl1 = readl(reg);
}
-- raw_spin_unlock_irqrestore(&chv_lock, flags);
--
++ raw_spin_unlock_irqrestore(&chv_lock, flags);
++
return 0;
}
--static int chv_pinctrl_resume_noirq(struct device *dev)
-+static int chv_pinctrl_resume(struct device *dev)
+-static int chv_pinctrl_resume(struct device *dev)
++static int chv_pinctrl_resume_noirq(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
struct chv_pinctrl *pctrl = platform_get_drvdata(pdev);
-- unsigned long flags;
++ unsigned long flags;
int i;
-- raw_spin_lock_irqsave(&chv_lock, flags);
--
++ raw_spin_lock_irqsave(&chv_lock, flags);
++
/*
* Mask all interrupts before restoring per-pin configuration
* registers because we don't know in which state BIOS left them
-@@ -1721,15 +1713,12 @@ static int chv_pinctrl_resume_noirq(struct device *dev)
+@@ -1713,12 +1721,15 @@ static int chv_pinctrl_resume(struct device *dev)
chv_writel(0xffff, pctrl->regs + CHV_INTSTAT);
chv_writel(pctrl->saved_intmask, pctrl->regs + CHV_INTMASK);
-- raw_spin_unlock_irqrestore(&chv_lock, flags);
--
++ raw_spin_unlock_irqrestore(&chv_lock, flags);
++
return 0;
}
#endif
static const struct dev_pm_ops chv_pinctrl_pm_ops = {
-- SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(chv_pinctrl_suspend_noirq,
-- chv_pinctrl_resume_noirq)
-+ SET_LATE_SYSTEM_SLEEP_PM_OPS(chv_pinctrl_suspend, chv_pinctrl_resume)
+- SET_LATE_SYSTEM_SLEEP_PM_OPS(chv_pinctrl_suspend, chv_pinctrl_resume)
++ SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(chv_pinctrl_suspend_noirq,
++ chv_pinctrl_resume_noirq)
};
static const struct acpi_device_id chv_pinctrl_acpi_match[] = {
diff --git a/drivers/platform/x86/toshiba-wmi.c b/drivers/platform/x86/toshiba-wmi.c
-index 2df07ee..feac457 100644
+index feac457..2df07ee 100644
--- a/drivers/platform/x86/toshiba-wmi.c
+++ b/drivers/platform/x86/toshiba-wmi.c
-@@ -24,15 +24,14 @@
+@@ -24,14 +24,15 @@
#include <linux/acpi.h>
#include <linux/input.h>
#include <linux/input/sparse-keymap.h>
--#include <linux/dmi.h>
++#include <linux/dmi.h>
MODULE_AUTHOR("Azael Avalos");
MODULE_DESCRIPTION("Toshiba WMI Hotkey Driver");
MODULE_LICENSE("GPL");
--#define WMI_EVENT_GUID "59142400-C6A3-40FA-BADB-8A2652834100"
-+#define TOSHIBA_WMI_EVENT_GUID "59142400-C6A3-40FA-BADB-8A2652834100"
+-#define TOSHIBA_WMI_EVENT_GUID "59142400-C6A3-40FA-BADB-8A2652834100"
++#define WMI_EVENT_GUID "59142400-C6A3-40FA-BADB-8A2652834100"
--MODULE_ALIAS("wmi:"WMI_EVENT_GUID);
-+MODULE_ALIAS("wmi:"TOSHIBA_WMI_EVENT_GUID);
+-MODULE_ALIAS("wmi:"TOSHIBA_WMI_EVENT_GUID);
++MODULE_ALIAS("wmi:"WMI_EVENT_GUID);
static struct input_dev *toshiba_wmi_input_dev;
-@@ -64,16 +63,6 @@ static void toshiba_wmi_notify(u32 value, void *context)
+@@ -63,6 +64,16 @@ static void toshiba_wmi_notify(u32 value, void *context)
kfree(response.pointer);
}
--static struct dmi_system_id toshiba_wmi_dmi_table[] __initdata = {
-- {
-- .ident = "Toshiba laptop",
-- .matches = {
-- DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
-- },
-- },
-- {}
--};
--
++static struct dmi_system_id toshiba_wmi_dmi_table[] __initdata = {
++ {
++ .ident = "Toshiba laptop",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
++ },
++ },
++ {}
++};
++
static int __init toshiba_wmi_input_setup(void)
{
acpi_status status;
-@@ -92,7 +81,7 @@ static int __init toshiba_wmi_input_setup(void)
+@@ -81,7 +92,7 @@ static int __init toshiba_wmi_input_setup(void)
if (err)
goto err_free_dev;
-- status = wmi_install_notify_handler(WMI_EVENT_GUID,
-+ status = wmi_install_notify_handler(TOSHIBA_WMI_EVENT_GUID,
+- status = wmi_install_notify_handler(TOSHIBA_WMI_EVENT_GUID,
++ status = wmi_install_notify_handler(WMI_EVENT_GUID,
toshiba_wmi_notify, NULL);
if (ACPI_FAILURE(status)) {
err = -EIO;
-@@ -106,7 +95,7 @@ static int __init toshiba_wmi_input_setup(void)
+@@ -95,7 +106,7 @@ static int __init toshiba_wmi_input_setup(void)
return 0;
err_remove_notifier:
-- wmi_remove_notify_handler(WMI_EVENT_GUID);
-+ wmi_remove_notify_handler(TOSHIBA_WMI_EVENT_GUID);
+- wmi_remove_notify_handler(TOSHIBA_WMI_EVENT_GUID);
++ wmi_remove_notify_handler(WMI_EVENT_GUID);
err_free_keymap:
sparse_keymap_free(toshiba_wmi_input_dev);
err_free_dev:
-@@ -116,7 +105,7 @@ static int __init toshiba_wmi_input_setup(void)
+@@ -105,7 +116,7 @@ static int __init toshiba_wmi_input_setup(void)
static void toshiba_wmi_input_destroy(void)
{
-- wmi_remove_notify_handler(WMI_EVENT_GUID);
-+ wmi_remove_notify_handler(TOSHIBA_WMI_EVENT_GUID);
+- wmi_remove_notify_handler(TOSHIBA_WMI_EVENT_GUID);
++ wmi_remove_notify_handler(WMI_EVENT_GUID);
sparse_keymap_free(toshiba_wmi_input_dev);
input_unregister_device(toshiba_wmi_input_dev);
}
-@@ -125,8 +114,7 @@ static int __init toshiba_wmi_init(void)
+@@ -114,7 +125,8 @@ static int __init toshiba_wmi_init(void)
{
int ret;
-- if (!wmi_has_guid(WMI_EVENT_GUID) ||
-- !dmi_check_system(toshiba_wmi_dmi_table))
-+ if (!wmi_has_guid(TOSHIBA_WMI_EVENT_GUID))
+- if (!wmi_has_guid(TOSHIBA_WMI_EVENT_GUID))
++ if (!wmi_has_guid(WMI_EVENT_GUID) ||
++ !dmi_check_system(toshiba_wmi_dmi_table))
return -ENODEV;
ret = toshiba_wmi_input_setup();
-@@ -142,7 +130,7 @@ static int __init toshiba_wmi_init(void)
+@@ -130,7 +142,7 @@ static int __init toshiba_wmi_init(void)
static void __exit toshiba_wmi_exit(void)
{
-- if (wmi_has_guid(WMI_EVENT_GUID))
-+ if (wmi_has_guid(TOSHIBA_WMI_EVENT_GUID))
+- if (wmi_has_guid(TOSHIBA_WMI_EVENT_GUID))
++ if (wmi_has_guid(WMI_EVENT_GUID))
toshiba_wmi_input_destroy();
}
diff --git a/drivers/rtc/rtc-pcf2123.c b/drivers/rtc/rtc-pcf2123.c
-index 8895f77..b4478cc 100644
+index b4478cc..8895f77 100644
--- a/drivers/rtc/rtc-pcf2123.c
+++ b/drivers/rtc/rtc-pcf2123.c
-@@ -182,8 +182,7 @@ static ssize_t pcf2123_show(struct device *dev, struct device_attribute *attr,
+@@ -182,7 +182,8 @@ static ssize_t pcf2123_show(struct device *dev, struct device_attribute *attr,
}
static ssize_t pcf2123_store(struct device *dev, struct device_attribute *attr,
-- const char *buffer, size_t count)
--{
-+ const char *buffer, size_t count) {
+- const char *buffer, size_t count) {
++ const char *buffer, size_t count)
++{
struct pcf2123_sysfs_reg *r;
unsigned long reg;
unsigned long val;
-@@ -200,7 +199,7 @@ static ssize_t pcf2123_store(struct device *dev, struct device_attribute *attr,
+@@ -199,7 +200,7 @@ static ssize_t pcf2123_store(struct device *dev, struct device_attribute *attr,
if (ret)
return ret;
-- ret = pcf2123_write_reg(dev, reg, val);
-+ pcf2123_write_reg(dev, reg, val);
+- pcf2123_write_reg(dev, reg, val);
++ ret = pcf2123_write_reg(dev, reg, val);
if (ret < 0)
return -EIO;
return count;
diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c
-index 920c421..752b5c9 100644
+index 752b5c9..920c421 100644
--- a/drivers/scsi/device_handler/scsi_dh_alua.c
+++ b/drivers/scsi/device_handler/scsi_dh_alua.c
-@@ -792,7 +792,6 @@ static void alua_rtpg_work(struct work_struct *work)
+@@ -792,6 +792,7 @@ static void alua_rtpg_work(struct work_struct *work)
WARN_ON(pg->flags & ALUA_PG_RUN_RTPG);
WARN_ON(pg->flags & ALUA_PG_RUN_STPG);
spin_unlock_irqrestore(&pg->lock, flags);
-- kref_put(&pg->kref, release_port_group);
++ kref_put(&pg->kref, release_port_group);
return;
}
if (pg->flags & ALUA_SYNC_STPG)
-@@ -890,7 +889,6 @@ static void alua_rtpg_queue(struct alua_port_group *pg,
+@@ -889,6 +890,7 @@ static void alua_rtpg_queue(struct alua_port_group *pg,
/* Do not queue if the worker is already running */
if (!(pg->flags & ALUA_PG_RUNNING)) {
kref_get(&pg->kref);
-- sdev = NULL;
++ sdev = NULL;
start_queue = 1;
}
}
-@@ -902,8 +900,7 @@ static void alua_rtpg_queue(struct alua_port_group *pg,
+@@ -900,7 +902,8 @@ static void alua_rtpg_queue(struct alua_port_group *pg,
if (start_queue &&
!queue_delayed_work(alua_wq, &pg->rtpg_work,
msecs_to_jiffies(ALUA_RTPG_DELAY_MSECS))) {
-- if (sdev)
-- scsi_device_put(sdev);
-+ scsi_device_put(sdev);
+- scsi_device_put(sdev);
++ if (sdev)
++ scsi_device_put(sdev);
kref_put(&pg->kref, release_port_group);
}
}
diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
-index 46c0f5e..4cb7990 100644
+index 4cb7990..46c0f5e 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
@@ -1273,9 +1273,9 @@ scsih_target_alloc(struct scsi_target *starget)
sas_target_priv_data->handle = raid_device->handle;
sas_target_priv_data->sas_address = raid_device->wwid;
sas_target_priv_data->flags |= MPT_TARGET_FLAGS_VOLUME;
-+ sas_target_priv_data->raid_device = raid_device;
+- sas_target_priv_data->raid_device = raid_device;
if (ioc->is_warpdrive)
-- sas_target_priv_data->raid_device = raid_device;
-- raid_device->starget = starget;
-+ raid_device->starget = starget;
+- raid_device->starget = starget;
++ sas_target_priv_data->raid_device = raid_device;
++ raid_device->starget = starget;
}
spin_unlock_irqrestore(&ioc->raid_device_lock, flags);
return 0;
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
-index e46e2c5..2674f4c 100644
+index 2674f4c..e46e2c5 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
-@@ -2341,8 +2341,6 @@ qla2xxx_scan_finished(struct Scsi_Host *shost, unsigned long time)
+@@ -2341,6 +2341,8 @@ qla2xxx_scan_finished(struct Scsi_Host *shost, unsigned long time)
{
scsi_qla_host_t *vha = shost_priv(shost);
-- if (test_bit(UNLOADING, &vha->dpc_flags))
-- return 1;
++ if (test_bit(UNLOADING, &vha->dpc_flags))
++ return 1;
if (!vha->host)
return 1;
if (time > vha->hw->loop_reset_delay * HZ)
diff --git a/drivers/staging/comedi/drivers/ni_tio.c b/drivers/staging/comedi/drivers/ni_tio.c
-index 5ab49a7..7043eb0 100644
+index 7043eb0..5ab49a7 100644
--- a/drivers/staging/comedi/drivers/ni_tio.c
+++ b/drivers/staging/comedi/drivers/ni_tio.c
-@@ -207,8 +207,7 @@ static int ni_tio_clock_period_ps(const struct ni_gpct *counter,
+@@ -207,7 +207,8 @@ static int ni_tio_clock_period_ps(const struct ni_gpct *counter,
* clock period is specified by user with prescaling
* already taken into account.
*/
-- *period_ps = counter->clock_period_ps;
-- return 0;
-+ return counter->clock_period_ps;
+- return counter->clock_period_ps;
++ *period_ps = counter->clock_period_ps;
++ return 0;
}
switch (generic_clock_source & NI_GPCT_PRESCALE_MODE_CLOCK_SRC_MASK) {
diff --git a/drivers/staging/iio/impedance-analyzer/ad5933.c b/drivers/staging/iio/impedance-analyzer/ad5933.c
-index 98d9473..24c348d 100644
+index 24c348d..98d9473 100644
--- a/drivers/staging/iio/impedance-analyzer/ad5933.c
+++ b/drivers/staging/iio/impedance-analyzer/ad5933.c
-@@ -655,7 +655,6 @@ static void ad5933_work(struct work_struct *work)
+@@ -655,6 +655,7 @@ static void ad5933_work(struct work_struct *work)
__be16 buf[2];
int val[2];
unsigned char status;
-- int ret;
++ int ret;
mutex_lock(&indio_dev->mlock);
if (st->state == AD5933_CTRL_INIT_START_FREQ) {
-@@ -663,22 +662,19 @@ static void ad5933_work(struct work_struct *work)
+@@ -662,19 +663,22 @@ static void ad5933_work(struct work_struct *work)
ad5933_cmd(st, AD5933_CTRL_START_SWEEP);
st->state = AD5933_CTRL_START_SWEEP;
schedule_delayed_work(&st->work, st->poll_time_jiffies);
-- goto out;
-+ mutex_unlock(&indio_dev->mlock);
-+ return;
+- mutex_unlock(&indio_dev->mlock);
+- return;
++ goto out;
}
-- ret = ad5933_i2c_read(st->client, AD5933_REG_STATUS, 1, &status);
-- if (ret)
-- goto out;
-+ ad5933_i2c_read(st->client, AD5933_REG_STATUS, 1, &status);
+- ad5933_i2c_read(st->client, AD5933_REG_STATUS, 1, &status);
++ ret = ad5933_i2c_read(st->client, AD5933_REG_STATUS, 1, &status);
++ if (ret)
++ goto out;
if (status & AD5933_STAT_DATA_VALID) {
int scan_count = bitmap_weight(indio_dev->active_scan_mask,
indio_dev->masklength);
-- ret = ad5933_i2c_read(st->client,
-+ ad5933_i2c_read(st->client,
+- ad5933_i2c_read(st->client,
++ ret = ad5933_i2c_read(st->client,
test_bit(1, indio_dev->active_scan_mask) ?
AD5933_REG_REAL_DATA : AD5933_REG_IMAG_DATA,
scan_count * 2, (u8 *)buf);
-- if (ret)
-- goto out;
++ if (ret)
++ goto out;
if (scan_count == 2) {
val[0] = be16_to_cpu(buf[0]);
-@@ -690,7 +686,8 @@ static void ad5933_work(struct work_struct *work)
+@@ -686,8 +690,7 @@ static void ad5933_work(struct work_struct *work)
} else {
/* no data available - try again later */
schedule_delayed_work(&st->work, st->poll_time_jiffies);
-- goto out;
-+ mutex_unlock(&indio_dev->mlock);
-+ return;
+- mutex_unlock(&indio_dev->mlock);
+- return;
++ goto out;
}
if (status & AD5933_STAT_SWEEP_DONE) {
-@@ -703,7 +700,7 @@ static void ad5933_work(struct work_struct *work)
+@@ -700,7 +703,7 @@ static void ad5933_work(struct work_struct *work)
ad5933_cmd(st, AD5933_CTRL_INC_FREQ);
schedule_delayed_work(&st->work, st->poll_time_jiffies);
}
--out:
-+
+-
++out:
mutex_unlock(&indio_dev->mlock);
}
diff --git a/drivers/staging/nvec/nvec_ps2.c b/drivers/staging/nvec/nvec_ps2.c
-index 499952c..a324322 100644
+index a324322..499952c 100644
--- a/drivers/staging/nvec/nvec_ps2.c
+++ b/drivers/staging/nvec/nvec_ps2.c
-@@ -106,12 +106,13 @@ static int nvec_mouse_probe(struct platform_device *pdev)
+@@ -106,13 +106,12 @@ static int nvec_mouse_probe(struct platform_device *pdev)
{
struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent);
struct serio *ser_dev;
-+ char mouse_reset[] = { NVEC_PS2, SEND_COMMAND, PSMOUSE_RST, 3 };
+- char mouse_reset[] = { NVEC_PS2, SEND_COMMAND, PSMOUSE_RST, 3 };
-- ser_dev = kzalloc(sizeof(struct serio), GFP_KERNEL);
-+ ser_dev = devm_kzalloc(&pdev->dev, sizeof(struct serio), GFP_KERNEL);
+- ser_dev = devm_kzalloc(&pdev->dev, sizeof(struct serio), GFP_KERNEL);
++ ser_dev = kzalloc(sizeof(struct serio), GFP_KERNEL);
if (!ser_dev)
return -ENOMEM;
-- ser_dev->id.type = SERIO_8042;
-+ ser_dev->id.type = SERIO_PS_PSTHRU;
+- ser_dev->id.type = SERIO_PS_PSTHRU;
++ ser_dev->id.type = SERIO_8042;
ser_dev->write = ps2_sendcommand;
ser_dev->start = ps2_startstreaming;
ser_dev->stop = ps2_stopstreaming;
-@@ -126,6 +127,9 @@ static int nvec_mouse_probe(struct platform_device *pdev)
+@@ -127,9 +126,6 @@ static int nvec_mouse_probe(struct platform_device *pdev)
serio_register_port(ser_dev);
-+ /* mouse reset */
-+ nvec_write_async(nvec, mouse_reset, sizeof(mouse_reset));
-+
+- /* mouse reset */
+- nvec_write_async(nvec, mouse_reset, sizeof(mouse_reset));
+-
return 0;
}
diff --git a/drivers/staging/sm750fb/ddk750_reg.h b/drivers/staging/sm750fb/ddk750_reg.h
-index 4ed6d8d..9552479 100644
+index 9552479..4ed6d8d 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -601,13 +601,13 @@
#define PANEL_PLANE_TL 0x08001C
#define PANEL_PLANE_TL_TOP_SHIFT 16
--#define PANEL_PLANE_TL_TOP_MASK (0x7ff << 16)
--#define PANEL_PLANE_TL_LEFT_MASK 0x7ff
-+#define PANEL_PLANE_TL_TOP_MASK (0xeff << 16)
-+#define PANEL_PLANE_TL_LEFT_MASK 0xeff
+-#define PANEL_PLANE_TL_TOP_MASK (0xeff << 16)
+-#define PANEL_PLANE_TL_LEFT_MASK 0xeff
++#define PANEL_PLANE_TL_TOP_MASK (0x7ff << 16)
++#define PANEL_PLANE_TL_LEFT_MASK 0x7ff
#define PANEL_PLANE_BR 0x080020
#define PANEL_PLANE_BR_BOTTOM_SHIFT 16
--#define PANEL_PLANE_BR_BOTTOM_MASK (0x7ff << 16)
--#define PANEL_PLANE_BR_RIGHT_MASK 0x7ff
-+#define PANEL_PLANE_BR_BOTTOM_MASK (0xeff << 16)
-+#define PANEL_PLANE_BR_RIGHT_MASK 0xeff
+-#define PANEL_PLANE_BR_BOTTOM_MASK (0xeff << 16)
+-#define PANEL_PLANE_BR_RIGHT_MASK 0xeff
++#define PANEL_PLANE_BR_BOTTOM_MASK (0x7ff << 16)
++#define PANEL_PLANE_BR_RIGHT_MASK 0x7ff
#define PANEL_HORIZONTAL_TOTAL 0x080024
#define PANEL_HORIZONTAL_TOTAL_TOTAL_SHIFT 16
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
-index 21aeac5..8bbde52 100644
+index 8bbde52..21aeac5 100644
--- a/drivers/tty/serial/atmel_serial.c
+++ b/drivers/tty/serial/atmel_serial.c
-@@ -2026,7 +2026,6 @@ static void atmel_serial_pm(struct uart_port *port, unsigned int state,
+@@ -2026,6 +2026,7 @@ static void atmel_serial_pm(struct uart_port *port, unsigned int state,
static void atmel_set_termios(struct uart_port *port, struct ktermios *termios,
struct ktermios *old)
{
-- struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
++ struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
unsigned long flags;
unsigned int old_mode, mode, imr, quot, baud;
-@@ -2130,29 +2129,11 @@ static void atmel_set_termios(struct uart_port *port, struct ktermios *termios,
+@@ -2129,11 +2130,29 @@ static void atmel_set_termios(struct uart_port *port, struct ktermios *termios,
mode |= ATMEL_US_USMODE_RS485;
} else if (termios->c_cflag & CRTSCTS) {
/* RS232 with hardware handshake (RTS/CTS) */
-- if (atmel_use_fifo(port) &&
-- !mctrl_gpio_to_gpiod(atmel_port->gpios, UART_GPIO_CTS)) {
-- /*
-- * with ATMEL_US_USMODE_HWHS set, the controller will
-- * be able to drive the RTS pin high/low when the RX
-- * FIFO is above RXFTHRES/below RXFTHRES2.
-- * It will also disable the transmitter when the CTS
-- * pin is high.
-- * This mode is not activated if CTS pin is a GPIO
-- * because in this case, the transmitter is always
-- * disabled (there must be an internal pull-up
-- * responsible for this behaviour).
-- * If the RTS pin is a GPIO, the controller won't be
-- * able to drive it according to the FIFO thresholds,
-- * but it will be handled by the driver.
-- */
-- mode |= ATMEL_US_USMODE_HWHS;
-+ if (atmel_use_dma_rx(port) && !atmel_use_fifo(port)) {
-+ dev_info(port->dev, "not enabling hardware flow control because DMA is used");
-+ termios->c_cflag &= ~CRTSCTS;
- } else {
-- /*
-- * For platforms without FIFO, the flow control is
-- * handled by the driver.
-- */
-- mode |= ATMEL_US_USMODE_NORMAL;
-+ mode |= ATMEL_US_USMODE_HWHS;
+- if (atmel_use_dma_rx(port) && !atmel_use_fifo(port)) {
+- dev_info(port->dev, "not enabling hardware flow control because DMA is used");
+- termios->c_cflag &= ~CRTSCTS;
+- } else {
++ if (atmel_use_fifo(port) &&
++ !mctrl_gpio_to_gpiod(atmel_port->gpios, UART_GPIO_CTS)) {
++ /*
++ * with ATMEL_US_USMODE_HWHS set, the controller will
++ * be able to drive the RTS pin high/low when the RX
++ * FIFO is above RXFTHRES/below RXFTHRES2.
++ * It will also disable the transmitter when the CTS
++ * pin is high.
++ * This mode is not activated if CTS pin is a GPIO
++ * because in this case, the transmitter is always
++ * disabled (there must be an internal pull-up
++ * responsible for this behaviour).
++ * If the RTS pin is a GPIO, the controller won't be
++ * able to drive it according to the FIFO thresholds,
++ * but it will be handled by the driver.
++ */
+ mode |= ATMEL_US_USMODE_HWHS;
++ } else {
++ /*
++ * For platforms without FIFO, the flow control is
++ * handled by the driver.
++ */
++ mode |= ATMEL_US_USMODE_NORMAL;
}
} else {
/* RS232 without hadware handshake */
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
-index 3ca9fdb..0f3f62e 100644
+index 0f3f62e..3ca9fdb 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
-@@ -946,6 +946,8 @@ static int wait_serial_change(struct acm *acm, unsigned long arg)
+@@ -946,8 +946,6 @@ static int wait_serial_change(struct acm *acm, unsigned long arg)
DECLARE_WAITQUEUE(wait, current);
struct async_icount old, new;
-+ if (arg & (TIOCM_DSR | TIOCM_RI | TIOCM_CD))
-+ return -EINVAL;
+- if (arg & (TIOCM_DSR | TIOCM_RI | TIOCM_CD))
+- return -EINVAL;
do {
spin_lock_irq(&acm->read_lock);
old = acm->oldcount;
-@@ -1173,8 +1175,6 @@ static int acm_probe(struct usb_interface *intf,
+@@ -1175,6 +1173,8 @@ static int acm_probe(struct usb_interface *intf,
if (quirks == IGNORE_DEVICE)
return -ENODEV;
-- memset(&h, 0x00, sizeof(struct usb_cdc_parsed_header));
--
++ memset(&h, 0x00, sizeof(struct usb_cdc_parsed_header));
++
num_rx_buf = (quirks == SINGLE_RX_URB) ? 1 : ACM_NR;
/* handle quirks deadly to normal probing*/
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
-index 2d47010..35d0924 100644
+index 35d0924..2d47010 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
-@@ -669,14 +669,15 @@ static int dwc3_core_init(struct dwc3 *dwc)
+@@ -669,15 +669,14 @@ static int dwc3_core_init(struct dwc3 *dwc)
return 0;
err4:
-- phy_power_off(dwc->usb3_generic_phy);
-+ phy_power_off(dwc->usb2_generic_phy);
-
- err3:
- phy_power_off(dwc->usb2_generic_phy);
+ phy_power_off(dwc->usb3_generic_phy);
+ err3:
+- phy_power_off(dwc->usb3_generic_phy);
++ phy_power_off(dwc->usb2_generic_phy);
+
err2:
usb_phy_set_suspend(dwc->usb2_phy, 1);
usb_phy_set_suspend(dwc->usb3_phy, 1);
-+ dwc3_core_exit(dwc);
+- dwc3_core_exit(dwc);
err1:
usb_phy_shutdown(dwc->usb2_phy);
diff --git a/drivers/usb/gadget/function/u_ether.c b/drivers/usb/gadget/function/u_ether.c
-index f590ada..9b9e71f 100644
+index 9b9e71f..f590ada 100644
--- a/drivers/usb/gadget/function/u_ether.c
+++ b/drivers/usb/gadget/function/u_ether.c
-@@ -585,6 +585,14 @@ static netdev_tx_t eth_start_xmit(struct sk_buff *skb,
+@@ -585,14 +585,6 @@ static netdev_tx_t eth_start_xmit(struct sk_buff *skb,
req->length = length;
-+ /* throttle high/super speed IRQ rate back slightly */
-+ if (gadget_is_dualspeed(dev->gadget))
-+ req->no_interrupt = (((dev->gadget->speed == USB_SPEED_HIGH ||
-+ dev->gadget->speed == USB_SPEED_SUPER)) &&
-+ !list_empty(&dev->tx_reqs))
-+ ? ((atomic_read(&dev->tx_qlen) % dev->qmult) != 0)
-+ : 0;
-+
+- /* throttle high/super speed IRQ rate back slightly */
+- if (gadget_is_dualspeed(dev->gadget))
+- req->no_interrupt = (((dev->gadget->speed == USB_SPEED_HIGH ||
+- dev->gadget->speed == USB_SPEED_SUPER)) &&
+- !list_empty(&dev->tx_reqs))
+- ? ((atomic_read(&dev->tx_qlen) % dev->qmult) != 0)
+- : 0;
+-
retval = usb_ep_queue(in, req, GFP_ATOMIC);
switch (retval) {
default:
diff --git a/drivers/watchdog/watchdog_core.c b/drivers/watchdog/watchdog_core.c
-index 74265b2..6abb83c 100644
+index 6abb83c..74265b2 100644
--- a/drivers/watchdog/watchdog_core.c
+++ b/drivers/watchdog/watchdog_core.c
@@ -349,7 +349,7 @@ int devm_watchdog_register_device(struct device *dev,
struct watchdog_device **rcwdd;
int ret;
-- rcwdd = devres_alloc(devm_watchdog_unregister_device, sizeof(*rcwdd),
-+ rcwdd = devres_alloc(devm_watchdog_unregister_device, sizeof(*wdd),
+- rcwdd = devres_alloc(devm_watchdog_unregister_device, sizeof(*wdd),
++ rcwdd = devres_alloc(devm_watchdog_unregister_device, sizeof(*rcwdd),
GFP_KERNEL);
if (!rcwdd)
return -ENOMEM;
diff --git a/fs/coredump.c b/fs/coredump.c
-index eb9c92c..281b768 100644
+index 281b768..eb9c92c 100644
--- a/fs/coredump.c
+++ b/fs/coredump.c
-@@ -1,7 +1,6 @@
+@@ -1,6 +1,7 @@
#include <linux/slab.h>
#include <linux/file.h>
#include <linux/fdtable.h>
--#include <linux/freezer.h>
++#include <linux/freezer.h>
#include <linux/mm.h>
#include <linux/stat.h>
#include <linux/fcntl.h>
-@@ -424,9 +423,7 @@ static int coredump_wait(int exit_code, struct core_state *core_state)
+@@ -423,7 +424,9 @@ static int coredump_wait(int exit_code, struct core_state *core_state)
if (core_waiters > 0) {
struct core_thread *ptr;
-- freezer_do_not_count();
++ freezer_do_not_count();
wait_for_completion(&core_state->startup);
-- freezer_count();
++ freezer_count();
/*
* Wait for all the threads to become inactive, so that
* all the thread context (extended register state, like
diff --git a/fs/nfs/nfs4session.c b/fs/nfs/nfs4session.c
-index 150c5a1..b629730 100644
+index b629730..150c5a1 100644
--- a/fs/nfs/nfs4session.c
+++ b/fs/nfs/nfs4session.c
-@@ -178,14 +178,12 @@ static int nfs4_slot_get_seqid(struct nfs4_slot_table *tbl, u32 slotid,
+@@ -178,12 +178,14 @@ static int nfs4_slot_get_seqid(struct nfs4_slot_table *tbl, u32 slotid,
__must_hold(&tbl->slot_tbl_lock)
{
struct nfs4_slot *slot;
-- int ret;
++ int ret;
slot = nfs4_lookup_slot(tbl, slotid);
-- ret = PTR_ERR_OR_ZERO(slot);
-- if (!ret)
-- *seq_nr = slot->seq_nr;
--
-- return ret;
-+ if (IS_ERR(slot))
-+ return PTR_ERR(slot);
-+ *seq_nr = slot->seq_nr;
-+ return 0;
+- if (IS_ERR(slot))
+- return PTR_ERR(slot);
+- *seq_nr = slot->seq_nr;
+- return 0;
++ ret = PTR_ERR_OR_ZERO(slot);
++ if (!ret)
++ *seq_nr = slot->seq_nr;
++
++ return ret;
}
/*
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
-index 67d1d3e..c5eaf2f 100644
+index c5eaf2f..67d1d3e 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
-@@ -318,7 +318,6 @@ struct pci_dev;
+@@ -318,6 +318,7 @@ struct pci_dev;
int acpi_pci_irq_enable (struct pci_dev *dev);
void acpi_penalize_isa_irq(int irq, int active);
bool acpi_isa_irq_available(int irq);
--void acpi_penalize_sci_irq(int irq, int trigger, int polarity);
++void acpi_penalize_sci_irq(int irq, int trigger, int polarity);
void acpi_pci_irq_disable (struct pci_dev *dev);
extern int ec_read(u8 addr, u8 *val);
diff --git a/include/linux/frontswap.h b/include/linux/frontswap.h
-index 1d18af0..c46d2aa 100644
+index c46d2aa..1d18af0 100644
--- a/include/linux/frontswap.h
+++ b/include/linux/frontswap.h
-@@ -106,9 +106,8 @@ static inline void frontswap_invalidate_area(unsigned type)
+@@ -106,8 +106,9 @@ static inline void frontswap_invalidate_area(unsigned type)
static inline void frontswap_init(unsigned type, unsigned long *map)
{
--#ifdef CONFIG_FRONTSWAP
-- __frontswap_init(type, map);
--#endif
-+ if (frontswap_enabled())
-+ __frontswap_init(type, map);
+- if (frontswap_enabled())
+- __frontswap_init(type, map);
++#ifdef CONFIG_FRONTSWAP
++ __frontswap_init(type, map);
++#endif
}
#endif /* _LINUX_FRONTSWAP_H */
diff --git a/include/linux/sunrpc/svc_rdma.h b/include/linux/sunrpc/svc_rdma.h
-index 3584bc8..d6917b8 100644
+index d6917b8..3584bc8 100644
--- a/include/linux/sunrpc/svc_rdma.h
+++ b/include/linux/sunrpc/svc_rdma.h
-@@ -86,7 +86,6 @@ struct svc_rdma_op_ctxt {
+@@ -86,6 +86,7 @@ struct svc_rdma_op_ctxt {
unsigned long flags;
enum dma_data_direction direction;
int count;
-- unsigned int mapped_sges;
++ unsigned int mapped_sges;
struct ib_sge sge[RPCSVC_MAXPAGES];
struct page *pages[RPCSVC_MAXPAGES];
};
-@@ -194,14 +193,6 @@ struct svcxprt_rdma {
+@@ -193,6 +194,14 @@ struct svcxprt_rdma {
#define RPCSVC_MAXPAYLOAD_RDMA RPCSVC_MAXPAYLOAD
--/* Track DMA maps for this transport and context */
--static inline void svc_rdma_count_mappings(struct svcxprt_rdma *rdma,
-- struct svc_rdma_op_ctxt *ctxt)
--{
-- ctxt->mapped_sges++;
-- atomic_inc(&rdma->sc_dma_used);
--}
--
++/* Track DMA maps for this transport and context */
++static inline void svc_rdma_count_mappings(struct svcxprt_rdma *rdma,
++ struct svc_rdma_op_ctxt *ctxt)
++{
++ ctxt->mapped_sges++;
++ atomic_inc(&rdma->sc_dma_used);
++}
++
/* svc_rdma_backchannel.c */
extern int svc_rdma_handle_bc_reply(struct rpc_xprt *xprt,
struct rpcrdma_msg *rmsgp,
diff --git a/lib/genalloc.c b/lib/genalloc.c
-index 144fe6b..0a11396 100644
+index 0a11396..144fe6b 100644
--- a/lib/genalloc.c
+++ b/lib/genalloc.c
@@ -292,7 +292,7 @@ unsigned long gen_pool_alloc_algo(struct gen_pool *pool, size_t size,
struct gen_pool_chunk *chunk;
unsigned long addr = 0;
int order = pool->min_alloc_order;
-- int nbits, start_bit, end_bit, remain;
-+ int nbits, start_bit = 0, end_bit, remain;
+- int nbits, start_bit = 0, end_bit, remain;
++ int nbits, start_bit, end_bit, remain;
#ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG
BUG_ON(in_nmi());
-@@ -307,7 +307,6 @@ unsigned long gen_pool_alloc_algo(struct gen_pool *pool, size_t size,
+@@ -307,6 +307,7 @@ unsigned long gen_pool_alloc_algo(struct gen_pool *pool, size_t size,
if (size > atomic_read(&chunk->avail))
continue;
-- start_bit = 0;
++ start_bit = 0;
end_bit = chunk_size(chunk) >> order;
retry:
start_bit = algo(chunk->bits, end_bit, start_bit,
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
-index 0ddce6a..770d83e 100644
+index 770d83e..0ddce6a 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
-@@ -1826,17 +1826,11 @@ static void return_unused_surplus_pages(struct hstate *h,
+@@ -1826,11 +1826,17 @@ static void return_unused_surplus_pages(struct hstate *h,
* is not the case is if a reserve map was changed between calls. It
* is the responsibility of the caller to notice the difference and
* take appropriate action.
-- *
-- * vma_add_reservation is used in error paths where a reservation must
-- * be restored when a newly allocated huge page must be freed. It is
-- * to be called after calling vma_needs_reservation to determine if a
-- * reservation exists.
++ *
++ * vma_add_reservation is used in error paths where a reservation must
++ * be restored when a newly allocated huge page must be freed. It is
++ * to be called after calling vma_needs_reservation to determine if a
++ * reservation exists.
*/
enum vma_resv_mode {
VMA_NEEDS_RESV,
VMA_COMMIT_RESV,
VMA_END_RESV,
-- VMA_ADD_RESV,
++ VMA_ADD_RESV,
};
static long __vma_reservation_common(struct hstate *h,
struct vm_area_struct *vma, unsigned long addr,
-@@ -1862,14 +1856,6 @@ static long __vma_reservation_common(struct hstate *h,
+@@ -1856,6 +1862,14 @@ static long __vma_reservation_common(struct hstate *h,
region_abort(resv, idx, idx + 1);
ret = 0;
break;
-- case VMA_ADD_RESV:
-- if (vma->vm_flags & VM_MAYSHARE)
-- ret = region_add(resv, idx, idx + 1);
-- else {
-- region_abort(resv, idx, idx + 1);
-- ret = region_del(resv, idx, idx + 1);
-- }
-- break;
++ case VMA_ADD_RESV:
++ if (vma->vm_flags & VM_MAYSHARE)
++ ret = region_add(resv, idx, idx + 1);
++ else {
++ region_abort(resv, idx, idx + 1);
++ ret = region_del(resv, idx, idx + 1);
++ }
++ break;
default:
BUG();
}
-@@ -1917,56 +1903,6 @@ static void vma_end_reservation(struct hstate *h,
+@@ -1903,6 +1917,56 @@ static void vma_end_reservation(struct hstate *h,
(void)__vma_reservation_common(h, vma, addr, VMA_END_RESV);
}
--static long vma_add_reservation(struct hstate *h,
-- struct vm_area_struct *vma, unsigned long addr)
--{
-- return __vma_reservation_common(h, vma, addr, VMA_ADD_RESV);
--}
--
--/*
-- * This routine is called to restore a reservation on error paths. In the
-- * specific error paths, a huge page was allocated (via alloc_huge_page)
-- * and is about to be freed. If a reservation for the page existed,
-- * alloc_huge_page would have consumed the reservation and set PagePrivate
-- * in the newly allocated page. When the page is freed via free_huge_page,
-- * the global reservation count will be incremented if PagePrivate is set.
-- * However, free_huge_page can not adjust the reserve map. Adjust the
-- * reserve map here to be consistent with global reserve count adjustments
-- * to be made by free_huge_page.
-- */
--static void restore_reserve_on_error(struct hstate *h,
-- struct vm_area_struct *vma, unsigned long address,
-- struct page *page)
--{
-- if (unlikely(PagePrivate(page))) {
-- long rc = vma_needs_reservation(h, vma, address);
--
-- if (unlikely(rc < 0)) {
-- /*
-- * Rare out of memory condition in reserve map
-- * manipulation. Clear PagePrivate so that
-- * global reserve count will not be incremented
-- * by free_huge_page. This will make it appear
-- * as though the reservation for this page was
-- * consumed. This may prevent the task from
-- * faulting in the page at a later time. This
-- * is better than inconsistent global huge page
-- * accounting of reserve counts.
-- */
-- ClearPagePrivate(page);
-- } else if (rc) {
-- rc = vma_add_reservation(h, vma, address);
-- if (unlikely(rc < 0))
-- /*
-- * See above comment about rare out of
-- * memory condition.
-- */
-- ClearPagePrivate(page);
-- } else
-- vma_end_reservation(h, vma, address);
-- }
--}
--
++static long vma_add_reservation(struct hstate *h,
++ struct vm_area_struct *vma, unsigned long addr)
++{
++ return __vma_reservation_common(h, vma, addr, VMA_ADD_RESV);
++}
++
++/*
++ * This routine is called to restore a reservation on error paths. In the
++ * specific error paths, a huge page was allocated (via alloc_huge_page)
++ * and is about to be freed. If a reservation for the page existed,
++ * alloc_huge_page would have consumed the reservation and set PagePrivate
++ * in the newly allocated page. When the page is freed via free_huge_page,
++ * the global reservation count will be incremented if PagePrivate is set.
++ * However, free_huge_page can not adjust the reserve map. Adjust the
++ * reserve map here to be consistent with global reserve count adjustments
++ * to be made by free_huge_page.
++ */
++static void restore_reserve_on_error(struct hstate *h,
++ struct vm_area_struct *vma, unsigned long address,
++ struct page *page)
++{
++ if (unlikely(PagePrivate(page))) {
++ long rc = vma_needs_reservation(h, vma, address);
++
++ if (unlikely(rc < 0)) {
++ /*
++ * Rare out of memory condition in reserve map
++ * manipulation. Clear PagePrivate so that
++ * global reserve count will not be incremented
++ * by free_huge_page. This will make it appear
++ * as though the reservation for this page was
++ * consumed. This may prevent the task from
++ * faulting in the page at a later time. This
++ * is better than inconsistent global huge page
++ * accounting of reserve counts.
++ */
++ ClearPagePrivate(page);
++ } else if (rc) {
++ rc = vma_add_reservation(h, vma, address);
++ if (unlikely(rc < 0))
++ /*
++ * See above comment about rare out of
++ * memory condition.
++ */
++ ClearPagePrivate(page);
++ } else
++ vma_end_reservation(h, vma, address);
++ }
++}
++
struct page *alloc_huge_page(struct vm_area_struct *vma,
unsigned long addr, int avoid_reserve)
{
-@@ -3562,7 +3498,6 @@ static int hugetlb_cow(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -3498,6 +3562,7 @@ static int hugetlb_cow(struct mm_struct *mm, struct vm_area_struct *vma,
spin_unlock(ptl);
mmu_notifier_invalidate_range_end(mm, mmun_start, mmun_end);
out_release_all:
-- restore_reserve_on_error(h, vma, address, new_page);
++ restore_reserve_on_error(h, vma, address, new_page);
put_page(new_page);
out_release_old:
put_page(old_page);
-@@ -3745,7 +3680,6 @@ static int hugetlb_no_page(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -3680,6 +3745,7 @@ static int hugetlb_no_page(struct mm_struct *mm, struct vm_area_struct *vma,
spin_unlock(ptl);
backout_unlocked:
unlock_page(page);
-- restore_reserve_on_error(h, vma, address, page);
++ restore_reserve_on_error(h, vma, address, page);
put_page(page);
goto out;
}
diff --git a/mm/memory-failure.c b/mm/memory-failure.c
-index 19e796d..de88f33 100644
+index de88f33..19e796d 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -1112,10 +1112,10 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
}
if (!PageHuge(p) && PageTransHuge(hpage)) {
-- lock_page(p);
-- if (!PageAnon(p) || unlikely(split_huge_page(p))) {
-- unlock_page(p);
-- if (!PageAnon(p))
-+ lock_page(hpage);
-+ if (!PageAnon(hpage) || unlikely(split_huge_page(hpage))) {
-+ unlock_page(hpage);
-+ if (!PageAnon(hpage))
+- lock_page(hpage);
+- if (!PageAnon(hpage) || unlikely(split_huge_page(hpage))) {
+- unlock_page(hpage);
+- if (!PageAnon(hpage))
++ lock_page(p);
++ if (!PageAnon(p) || unlikely(split_huge_page(p))) {
++ unlock_page(p);
++ if (!PageAnon(p))
pr_err("Memory failure: %#lx: non anonymous thp\n",
pfn);
else
-@@ -1126,7 +1126,9 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
+@@ -1126,9 +1126,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
put_hwpoison_page(p);
return -EBUSY;
}
-- unlock_page(p);
-+ unlock_page(hpage);
-+ get_hwpoison_page(p);
-+ put_hwpoison_page(hpage);
+- unlock_page(hpage);
+- get_hwpoison_page(p);
+- put_hwpoison_page(hpage);
++ unlock_page(p);
VM_BUG_ON_PAGE(!page_count(p), p);
hpage = compound_head(p);
}
diff --git a/mm/shmem.c b/mm/shmem.c
-index 38aa5e0..971fc83 100644
+index 971fc83..38aa5e0 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
-@@ -1483,8 +1483,6 @@ static int shmem_replace_page(struct page **pagep, gfp_t gfp,
+@@ -1483,6 +1483,8 @@ static int shmem_replace_page(struct page **pagep, gfp_t gfp,
copy_highpage(newpage, oldpage);
flush_dcache_page(newpage);
-- __SetPageLocked(newpage);
-- __SetPageSwapBacked(newpage);
++ __SetPageLocked(newpage);
++ __SetPageSwapBacked(newpage);
SetPageUptodate(newpage);
set_page_private(newpage, swap_index);
SetPageSwapCache(newpage);
diff --git a/mm/slab_common.c b/mm/slab_common.c
-index 329b038..71f0b28 100644
+index 71f0b28..329b038 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -533,8 +533,8 @@ void memcg_create_kmem_cache(struct mem_cgroup *memcg,
s = create_cache(cache_name, root_cache->object_size,
root_cache->size, root_cache->align,
-- root_cache->flags & CACHE_CREATE_MASK,
-- root_cache->ctor, memcg, root_cache);
-+ root_cache->flags, root_cache->ctor,
-+ memcg, root_cache);
+- root_cache->flags, root_cache->ctor,
+- memcg, root_cache);
++ root_cache->flags & CACHE_CREATE_MASK,
++ root_cache->ctor, memcg, root_cache);
/*
* If we could not create a memcg cache, do not complain, because
* that's not critical at all as we can always proceed with the root
diff --git a/mm/swapfile.c b/mm/swapfile.c
-index bf262e4..2657acc 100644
+index 2657acc..bf262e4 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
-@@ -2218,8 +2218,6 @@ static unsigned long read_swap_header(struct swap_info_struct *p,
+@@ -2218,6 +2218,8 @@ static unsigned long read_swap_header(struct swap_info_struct *p,
swab32s(&swap_header->info.version);
swab32s(&swap_header->info.last_page);
swab32s(&swap_header->info.nr_badpages);
-- if (swap_header->info.nr_badpages > MAX_SWAP_BADPAGES)
-- return 0;
++ if (swap_header->info.nr_badpages > MAX_SWAP_BADPAGES)
++ return 0;
for (i = 0; i < swap_header->info.nr_badpages; i++)
swab32s(&swap_header->info.badpages[i]);
}
diff --git a/net/batman-adv/originator.c b/net/batman-adv/originator.c
-index 3e9667e..3940b5d 100644
+index 3940b5d..3e9667e 100644
--- a/net/batman-adv/originator.c
+++ b/net/batman-adv/originator.c
@@ -537,7 +537,7 @@ batadv_hardif_neigh_create(struct batadv_hard_iface *hard_iface,
if (bat_priv->algo_ops->neigh.hardif_init)
bat_priv->algo_ops->neigh.hardif_init(hardif_neigh);
-- hlist_add_head_rcu(&hardif_neigh->list, &hard_iface->neigh_list);
-+ hlist_add_head(&hardif_neigh->list, &hard_iface->neigh_list);
+- hlist_add_head(&hardif_neigh->list, &hard_iface->neigh_list);
++ hlist_add_head_rcu(&hardif_neigh->list, &hard_iface->neigh_list);
out:
spin_unlock_bh(&hard_iface->neigh_list_lock);
diff --git a/net/ceph/ceph_fs.c b/net/ceph/ceph_fs.c
-index dcbe67f..7d54e94 100644
+index 7d54e94..dcbe67f 100644
--- a/net/ceph/ceph_fs.c
+++ b/net/ceph/ceph_fs.c
-@@ -34,8 +34,7 @@ void ceph_file_layout_from_legacy(struct ceph_file_layout *fl,
+@@ -34,7 +34,8 @@ void ceph_file_layout_from_legacy(struct ceph_file_layout *fl,
fl->stripe_count = le32_to_cpu(legacy->fl_stripe_count);
fl->object_size = le32_to_cpu(legacy->fl_object_size);
fl->pool_id = le32_to_cpu(legacy->fl_pg_pool);
-- if (fl->pool_id == 0 && fl->stripe_unit == 0 &&
-- fl->stripe_count == 0 && fl->object_size == 0)
-+ if (fl->pool_id == 0)
+- if (fl->pool_id == 0)
++ if (fl->pool_id == 0 && fl->stripe_unit == 0 &&
++ fl->stripe_count == 0 && fl->object_size == 0)
fl->pool_id = -1;
}
EXPORT_SYMBOL(ceph_file_layout_from_legacy);
diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c
-index 1df2c8d..aa5847a 100644
+index aa5847a..1df2c8d 100644
--- a/net/netfilter/nf_log.c
+++ b/net/netfilter/nf_log.c
@@ -420,7 +420,7 @@ static int nf_log_proc_dostring(struct ctl_table *table, int write,
char buf[NFLOGGER_NAME_LEN];
int r = 0;
int tindex = (unsigned long)table->extra1;
-- struct net *net = table->extra2;
-+ struct net *net = current->nsproxy->net_ns;
+- struct net *net = current->nsproxy->net_ns;
++ struct net *net = table->extra2;
if (write) {
struct ctl_table tmp = *table;
-@@ -474,6 +474,7 @@ static int netfilter_log_sysctl_init(struct net *net)
+@@ -474,7 +474,6 @@ static int netfilter_log_sysctl_init(struct net *net)
3, "%d", i);
nf_log_sysctl_table[i].procname =
nf_log_sysctl_fnames[i];
-+ nf_log_sysctl_table[i].data = NULL;
+- nf_log_sysctl_table[i].data = NULL;
nf_log_sysctl_table[i].maxlen = NFLOGGER_NAME_LEN;
nf_log_sysctl_table[i].mode = 0644;
nf_log_sysctl_table[i].proc_handler =
-@@ -483,9 +484,6 @@ static int netfilter_log_sysctl_init(struct net *net)
+@@ -484,6 +483,9 @@ static int netfilter_log_sysctl_init(struct net *net)
}
}
-- for (i = NFPROTO_UNSPEC; i < NFPROTO_NUMPROTO; i++)
-- table[i].extra2 = net;
--
++ for (i = NFPROTO_UNSPEC; i < NFPROTO_NUMPROTO; i++)
++ table[i].extra2 = net;
++
net->nf.nf_log_dir_header = register_net_sysctl(net,
"net/netfilter/nf_log",
table);
diff --git a/net/sunrpc/xprtrdma/frwr_ops.c b/net/sunrpc/xprtrdma/frwr_ops.c
-index 2761377..892b5e1 100644
+index 892b5e1..2761377 100644
--- a/net/sunrpc/xprtrdma/frwr_ops.c
+++ b/net/sunrpc/xprtrdma/frwr_ops.c
-@@ -44,20 +44,18 @@
+@@ -44,18 +44,20 @@
* being done.
*
* When the underlying transport disconnects, MRs are left in one of
-- * four states:
-+ * three states:
+- * three states:
++ * four states:
*
* INVALID: The MR was not in use before the QP entered ERROR state.
-+ * (Or, the LOCAL_INV WR has not completed or flushed yet).
- *
-- * VALID: The MR was registered before the QP entered ERROR state.
+- * (Or, the LOCAL_INV WR has not completed or flushed yet).
- *
-- * FLUSHED_FR: The MR was being registered when the QP entered ERROR
-- * state, and the pending WR was flushed.
-+ * STALE: The MR was being registered or unregistered when the QP
-+ * entered ERROR state, and the pending WR was flushed.
+- * STALE: The MR was being registered or unregistered when the QP
+- * entered ERROR state, and the pending WR was flushed.
*
-- * FLUSHED_LI: The MR was being invalidated when the QP entered ERROR
-- * state, and the pending WR was flushed.
-+ * VALID: The MR was registered before the QP entered ERROR state.
+ * VALID: The MR was registered before the QP entered ERROR state.
*
-- * When frwr_op_map encounters FLUSHED and VALID MRs, they are recovered
-- * with ib_dereg_mr and then are re-initialized. Because MR recovery
-+ * When frwr_op_map encounters STALE and VALID MRs, they are recovered
-+ * with ib_dereg_mr and then are re-initialized. Beause MR recovery
+- * When frwr_op_map encounters STALE and VALID MRs, they are recovered
+- * with ib_dereg_mr and then are re-initialized. Beause MR recovery
++ * FLUSHED_FR: The MR was being registered when the QP entered ERROR
++ * state, and the pending WR was flushed.
++ *
++ * FLUSHED_LI: The MR was being invalidated when the QP entered ERROR
++ * state, and the pending WR was flushed.
++ *
++ * When frwr_op_map encounters FLUSHED and VALID MRs, they are recovered
++ * with ib_dereg_mr and then are re-initialized. Because MR recovery
* allocates fresh resources, it is deferred to a workqueue, and the
* recovered MRs are placed back on the rb_mws list when recovery is
* complete. frwr_op_map allocates another MR for the current RPC while
-@@ -177,15 +175,12 @@ __frwr_reset_mr(struct rpcrdma_ia *ia, struct rpcrdma_mw *r)
+@@ -175,12 +177,15 @@ __frwr_reset_mr(struct rpcrdma_ia *ia, struct rpcrdma_mw *r)
static void
frwr_op_recover_mr(struct rpcrdma_mw *mw)
{
-- enum rpcrdma_frmr_state state = mw->frmr.fr_state;
++ enum rpcrdma_frmr_state state = mw->frmr.fr_state;
struct rpcrdma_xprt *r_xprt = mw->mw_xprt;
struct rpcrdma_ia *ia = &r_xprt->rx_ia;
int rc;
rc = __frwr_reset_mr(ia, mw);
-- if (state != FRMR_FLUSHED_LI)
-- ib_dma_unmap_sg(ia->ri_device,
-- mw->mw_sg, mw->mw_nents, mw->mw_dir);
-+ ib_dma_unmap_sg(ia->ri_device, mw->mw_sg, mw->mw_nents, mw->mw_dir);
+- ib_dma_unmap_sg(ia->ri_device, mw->mw_sg, mw->mw_nents, mw->mw_dir);
++ if (state != FRMR_FLUSHED_LI)
++ ib_dma_unmap_sg(ia->ri_device,
++ mw->mw_sg, mw->mw_nents, mw->mw_dir);
if (rc)
goto out_release;
-@@ -266,8 +261,10 @@ frwr_op_maxpages(struct rpcrdma_xprt *r_xprt)
+@@ -261,10 +266,8 @@ frwr_op_maxpages(struct rpcrdma_xprt *r_xprt)
}
static void
--__frwr_sendcompletion_flush(struct ib_wc *wc, const char *wr)
-+__frwr_sendcompletion_flush(struct ib_wc *wc, struct rpcrdma_frmr *frmr,
-+ const char *wr)
+-__frwr_sendcompletion_flush(struct ib_wc *wc, struct rpcrdma_frmr *frmr,
+- const char *wr)
++__frwr_sendcompletion_flush(struct ib_wc *wc, const char *wr)
{
-+ frmr->fr_state = FRMR_IS_STALE;
+- frmr->fr_state = FRMR_IS_STALE;
if (wc->status != IB_WC_WR_FLUSH_ERR)
pr_err("rpcrdma: %s: %s (%u/0x%x)\n",
wr, ib_wc_status_msg(wc->status),
-@@ -290,8 +287,7 @@ frwr_wc_fastreg(struct ib_cq *cq, struct ib_wc *wc)
+@@ -287,7 +290,8 @@ frwr_wc_fastreg(struct ib_cq *cq, struct ib_wc *wc)
if (wc->status != IB_WC_SUCCESS) {
cqe = wc->wr_cqe;
frmr = container_of(cqe, struct rpcrdma_frmr, fr_cqe);
-- frmr->fr_state = FRMR_FLUSHED_FR;
-- __frwr_sendcompletion_flush(wc, "fastreg");
-+ __frwr_sendcompletion_flush(wc, frmr, "fastreg");
+- __frwr_sendcompletion_flush(wc, frmr, "fastreg");
++ frmr->fr_state = FRMR_FLUSHED_FR;
++ __frwr_sendcompletion_flush(wc, "fastreg");
}
}
-@@ -311,8 +307,7 @@ frwr_wc_localinv(struct ib_cq *cq, struct ib_wc *wc)
+@@ -307,7 +311,8 @@ frwr_wc_localinv(struct ib_cq *cq, struct ib_wc *wc)
if (wc->status != IB_WC_SUCCESS) {
cqe = wc->wr_cqe;
frmr = container_of(cqe, struct rpcrdma_frmr, fr_cqe);
-- frmr->fr_state = FRMR_FLUSHED_LI;
-- __frwr_sendcompletion_flush(wc, "localinv");
-+ __frwr_sendcompletion_flush(wc, frmr, "localinv");
+- __frwr_sendcompletion_flush(wc, frmr, "localinv");
++ frmr->fr_state = FRMR_FLUSHED_LI;
++ __frwr_sendcompletion_flush(wc, "localinv");
}
}
-@@ -332,11 +327,9 @@ frwr_wc_localinv_wake(struct ib_cq *cq, struct ib_wc *wc)
+@@ -327,9 +332,11 @@ frwr_wc_localinv_wake(struct ib_cq *cq, struct ib_wc *wc)
/* WARNING: Only wr_cqe and status are reliable at this point */
cqe = wc->wr_cqe;
frmr = container_of(cqe, struct rpcrdma_frmr, fr_cqe);
-- if (wc->status != IB_WC_SUCCESS) {
-- frmr->fr_state = FRMR_FLUSHED_LI;
-- __frwr_sendcompletion_flush(wc, "localinv");
-- }
-- complete(&frmr->fr_linv_done);
-+ if (wc->status != IB_WC_SUCCESS)
-+ __frwr_sendcompletion_flush(wc, frmr, "localinv");
-+ complete_all(&frmr->fr_linv_done);
+- if (wc->status != IB_WC_SUCCESS)
+- __frwr_sendcompletion_flush(wc, frmr, "localinv");
+- complete_all(&frmr->fr_linv_done);
++ if (wc->status != IB_WC_SUCCESS) {
++ frmr->fr_state = FRMR_FLUSHED_LI;
++ __frwr_sendcompletion_flush(wc, "localinv");
++ }
++ complete(&frmr->fr_linv_done);
}
/* Post a REG_MR Work Request to register a memory region
diff --git a/net/sunrpc/xprtrdma/svc_rdma_backchannel.c b/net/sunrpc/xprtrdma/svc_rdma_backchannel.c
-index cd0c558..a2a7519 100644
+index a2a7519..cd0c558 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_backchannel.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_backchannel.c
@@ -129,7 +129,7 @@ static int svc_rdma_bc_sendto(struct svcxprt_rdma *rdma,
ret = -EIO;
goto out_unmap;
}
-- svc_rdma_count_mappings(rdma, ctxt);
-+ atomic_inc(&rdma->sc_dma_used);
+- atomic_inc(&rdma->sc_dma_used);
++ svc_rdma_count_mappings(rdma, ctxt);
memset(&send_wr, 0, sizeof(send_wr));
ctxt->cqe.done = svc_rdma_wc_send;
diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
-index ad1df97..2c25606 100644
+index 2c25606..ad1df97 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
@@ -159,7 +159,7 @@ int rdma_read_chunk_lcl(struct svcxprt_rdma *xprt,
ctxt->sge[pno].addr);
if (ret)
goto err;
-- svc_rdma_count_mappings(xprt, ctxt);
-+ atomic_inc(&xprt->sc_dma_used);
+- atomic_inc(&xprt->sc_dma_used);
++ svc_rdma_count_mappings(xprt, ctxt);
ctxt->sge[pno].lkey = xprt->sc_pd->local_dma_lkey;
ctxt->sge[pno].length = len;
diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
-index 3b95b19..54d53330 100644
+index 54d53330..3b95b19 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
@@ -280,7 +280,7 @@ static int send_write(struct svcxprt_rdma *xprt, struct svc_rqst *rqstp,
if (ib_dma_mapping_error(xprt->sc_cm_id->device,
sge[sge_no].addr))
goto err;
-- svc_rdma_count_mappings(xprt, ctxt);
-+ atomic_inc(&xprt->sc_dma_used);
+- atomic_inc(&xprt->sc_dma_used);
++ svc_rdma_count_mappings(xprt, ctxt);
sge[sge_no].lkey = xprt->sc_pd->local_dma_lkey;
ctxt->count++;
sge_off = 0;
@@ -2766,8 +2767,8 @@ index 3b95b19..54d53330 100644
ctxt->sge[0].length, DMA_TO_DEVICE);
if (ib_dma_mapping_error(rdma->sc_cm_id->device, ctxt->sge[0].addr))
goto err;
-- svc_rdma_count_mappings(rdma, ctxt);
-+ atomic_inc(&rdma->sc_dma_used);
+- atomic_inc(&rdma->sc_dma_used);
++ svc_rdma_count_mappings(rdma, ctxt);
ctxt->direction = DMA_TO_DEVICE;
@@ -2775,345 +2776,345 @@ index 3b95b19..54d53330 100644
if (ib_dma_mapping_error(rdma->sc_cm_id->device,
ctxt->sge[sge_no].addr))
goto err;
-- svc_rdma_count_mappings(rdma, ctxt);
-+ atomic_inc(&rdma->sc_dma_used);
+- atomic_inc(&rdma->sc_dma_used);
++ svc_rdma_count_mappings(rdma, ctxt);
ctxt->sge[sge_no].lkey = rdma->sc_pd->local_dma_lkey;
ctxt->sge[sge_no].length = sge_bytes;
}
-@@ -523,9 +523,23 @@ static int send_reply(struct svcxprt_rdma *rdma,
+@@ -523,23 +523,9 @@ static int send_reply(struct svcxprt_rdma *rdma,
ctxt->pages[page_no+1] = rqstp->rq_respages[page_no];
ctxt->count++;
rqstp->rq_respages[page_no] = NULL;
-+ /*
-+ * If there are more pages than SGE, terminate SGE
-+ * list so that svc_rdma_unmap_dma doesn't attempt to
-+ * unmap garbage.
-+ */
-+ if (page_no+1 >= sge_no)
-+ ctxt->sge[page_no+1].length = 0;
+- /*
+- * If there are more pages than SGE, terminate SGE
+- * list so that svc_rdma_unmap_dma doesn't attempt to
+- * unmap garbage.
+- */
+- if (page_no+1 >= sge_no)
+- ctxt->sge[page_no+1].length = 0;
}
rqstp->rq_next_page = rqstp->rq_respages + 1;
-+ /* The loop above bumps sc_dma_used for each sge. The
-+ * xdr_buf.tail gets a separate sge, but resides in the
-+ * same page as xdr_buf.head. Don't count it twice.
-+ */
-+ if (sge_no > ctxt->count)
-+ atomic_dec(&rdma->sc_dma_used);
-+
+- /* The loop above bumps sc_dma_used for each sge. The
+- * xdr_buf.tail gets a separate sge, but resides in the
+- * same page as xdr_buf.head. Don't count it twice.
+- */
+- if (sge_no > ctxt->count)
+- atomic_dec(&rdma->sc_dma_used);
+-
if (sge_no > rdma->sc_max_sge) {
pr_err("svcrdma: Too many sges (%d)\n", sge_no);
goto err;
-@@ -621,7 +635,7 @@ int svc_rdma_sendto(struct svc_rqst *rqstp)
+@@ -635,7 +621,7 @@ int svc_rdma_sendto(struct svc_rqst *rqstp)
ret = send_reply(rdma, rqstp, res_page, rdma_resp, vec,
inline_bytes);
if (ret < 0)
-- goto err0;
-+ goto err1;
+- goto err1;
++ goto err0;
svc_rdma_put_req_map(rdma, vec);
dprintk("svcrdma: send_reply returns %d\n", ret);
-@@ -678,7 +692,7 @@ void svc_rdma_send_error(struct svcxprt_rdma *xprt, struct rpcrdma_msg *rmsgp,
+@@ -692,7 +678,7 @@ void svc_rdma_send_error(struct svcxprt_rdma *xprt, struct rpcrdma_msg *rmsgp,
svc_rdma_put_context(ctxt, 1);
return;
}
-- svc_rdma_count_mappings(xprt, ctxt);
-+ atomic_inc(&xprt->sc_dma_used);
+- atomic_inc(&xprt->sc_dma_used);
++ svc_rdma_count_mappings(xprt, ctxt);
/* Prepare SEND WR */
memset(&err_wr, 0, sizeof(err_wr));
diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
-index 924271c..dd94401 100644
+index dd94401..924271c 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
-@@ -198,7 +198,6 @@ struct svc_rdma_op_ctxt *svc_rdma_get_context(struct svcxprt_rdma *xprt)
+@@ -198,6 +198,7 @@ struct svc_rdma_op_ctxt *svc_rdma_get_context(struct svcxprt_rdma *xprt)
out:
ctxt->count = 0;
-- ctxt->mapped_sges = 0;
++ ctxt->mapped_sges = 0;
ctxt->frmr = NULL;
return ctxt;
-@@ -222,27 +221,22 @@ struct svc_rdma_op_ctxt *svc_rdma_get_context(struct svcxprt_rdma *xprt)
+@@ -221,22 +222,27 @@ struct svc_rdma_op_ctxt *svc_rdma_get_context(struct svcxprt_rdma *xprt)
void svc_rdma_unmap_dma(struct svc_rdma_op_ctxt *ctxt)
{
struct svcxprt_rdma *xprt = ctxt->xprt;
-- struct ib_device *device = xprt->sc_cm_id->device;
-- u32 lkey = xprt->sc_pd->local_dma_lkey;
-- unsigned int i, count;
--
-- for (count = 0, i = 0; i < ctxt->mapped_sges; i++) {
-+ int i;
-+ for (i = 0; i < ctxt->count && ctxt->sge[i].length; i++) {
+- int i;
+- for (i = 0; i < ctxt->count && ctxt->sge[i].length; i++) {
++ struct ib_device *device = xprt->sc_cm_id->device;
++ u32 lkey = xprt->sc_pd->local_dma_lkey;
++ unsigned int i, count;
++
++ for (count = 0, i = 0; i < ctxt->mapped_sges; i++) {
/*
* Unmap the DMA addr in the SGE if the lkey matches
* the local_dma_lkey, otherwise, ignore it since it is
* an FRMR lkey and will be unmapped later when the
* last WR that uses it completes.
*/
-- if (ctxt->sge[i].lkey == lkey) {
-- count++;
-- ib_dma_unmap_page(device,
-+ if (ctxt->sge[i].lkey == xprt->sc_pd->local_dma_lkey) {
-+ atomic_dec(&xprt->sc_dma_used);
-+ ib_dma_unmap_page(xprt->sc_cm_id->device,
+- if (ctxt->sge[i].lkey == xprt->sc_pd->local_dma_lkey) {
+- atomic_dec(&xprt->sc_dma_used);
+- ib_dma_unmap_page(xprt->sc_cm_id->device,
++ if (ctxt->sge[i].lkey == lkey) {
++ count++;
++ ib_dma_unmap_page(device,
ctxt->sge[i].addr,
ctxt->sge[i].length,
ctxt->direction);
}
}
-- ctxt->mapped_sges = 0;
-- atomic_sub(count, &xprt->sc_dma_used);
++ ctxt->mapped_sges = 0;
++ atomic_sub(count, &xprt->sc_dma_used);
}
void svc_rdma_put_context(struct svc_rdma_op_ctxt *ctxt, int free_pages)
-@@ -606,7 +600,7 @@ int svc_rdma_post_recv(struct svcxprt_rdma *xprt, gfp_t flags)
+@@ -600,7 +606,7 @@ int svc_rdma_post_recv(struct svcxprt_rdma *xprt, gfp_t flags)
DMA_FROM_DEVICE);
if (ib_dma_mapping_error(xprt->sc_cm_id->device, pa))
goto err_put_ctxt;
-- svc_rdma_count_mappings(xprt, ctxt);
-+ atomic_inc(&xprt->sc_dma_used);
+- atomic_inc(&xprt->sc_dma_used);
++ svc_rdma_count_mappings(xprt, ctxt);
ctxt->sge[sge_no].addr = pa;
ctxt->sge[sge_no].length = PAGE_SIZE;
ctxt->sge[sge_no].lkey = xprt->sc_pd->local_dma_lkey;
diff --git a/net/sunrpc/xprtrdma/xprt_rdma.h b/net/sunrpc/xprtrdma/xprt_rdma.h
-index edc0344..a71b0f5 100644
+index a71b0f5..edc0344 100644
--- a/net/sunrpc/xprtrdma/xprt_rdma.h
+++ b/net/sunrpc/xprtrdma/xprt_rdma.h
-@@ -207,8 +207,7 @@ struct rpcrdma_rep {
+@@ -207,7 +207,8 @@ struct rpcrdma_rep {
enum rpcrdma_frmr_state {
FRMR_IS_INVALID, /* ready to be used */
FRMR_IS_VALID, /* in use */
-- FRMR_FLUSHED_FR, /* flushed FASTREG WR */
-- FRMR_FLUSHED_LI, /* flushed LOCALINV WR */
-+ FRMR_IS_STALE, /* failed completion */
+- FRMR_IS_STALE, /* failed completion */
++ FRMR_FLUSHED_FR, /* flushed FASTREG WR */
++ FRMR_FLUSHED_LI, /* flushed LOCALINV WR */
};
struct rpcrdma_frmr {
diff --git a/sound/core/info.c b/sound/core/info.c
-index 8ab72e0..895362a 100644
+index 895362a..8ab72e0 100644
--- a/sound/core/info.c
+++ b/sound/core/info.c
-@@ -325,15 +325,10 @@ static ssize_t snd_info_text_entry_write(struct file *file,
+@@ -325,10 +325,15 @@ static ssize_t snd_info_text_entry_write(struct file *file,
size_t next;
int err = 0;
-- if (!entry->c.text.write)
-- return -EIO;
++ if (!entry->c.text.write)
++ return -EIO;
pos = *offset;
if (!valid_pos(pos, count))
return -EIO;
next = pos + count;
-- /* don't handle too large text inputs */
-- if (next > 16 * 1024)
-- return -EIO;
++ /* don't handle too large text inputs */
++ if (next > 16 * 1024)
++ return -EIO;
mutex_lock(&entry->access);
buf = data->wbuffer;
if (!buf) {
-@@ -371,9 +366,7 @@ static int snd_info_seq_show(struct seq_file *seq, void *p)
+@@ -366,7 +371,9 @@ static int snd_info_seq_show(struct seq_file *seq, void *p)
struct snd_info_private_data *data = seq->private;
struct snd_info_entry *entry = data->entry;
-- if (!entry->c.text.read) {
-- return -EIO;
-- } else {
-+ if (entry->c.text.read) {
+- if (entry->c.text.read) {
++ if (!entry->c.text.read) {
++ return -EIO;
++ } else {
data->rbuffer->buffer = (char *)seq; /* XXX hack! */
entry->c.text.read(entry, data->rbuffer);
}
diff --git a/sound/soc/codecs/cs4270.c b/sound/soc/codecs/cs4270.c
-index 3670086b..e07807d 100644
+index e07807d..3670086b 100644
--- a/sound/soc/codecs/cs4270.c
+++ b/sound/soc/codecs/cs4270.c
@@ -148,11 +148,11 @@ SND_SOC_DAPM_OUTPUT("AOUTR"),
};
static const struct snd_soc_dapm_route cs4270_dapm_routes[] = {
-- { "Capture", NULL, "AINL" },
-- { "Capture", NULL, "AINR" },
-+ { "Capture", NULL, "AINA" },
-+ { "Capture", NULL, "AINB" },
-
-- { "AOUTL", NULL, "Playback" },
-- { "AOUTR", NULL, "Playback" },
-+ { "AOUTA", NULL, "Playback" },
-+ { "AOUTB", NULL, "Playback" },
+- { "Capture", NULL, "AINA" },
+- { "Capture", NULL, "AINB" },
++ { "Capture", NULL, "AINL" },
++ { "Capture", NULL, "AINR" },
+
+- { "AOUTA", NULL, "Playback" },
+- { "AOUTB", NULL, "Playback" },
++ { "AOUTL", NULL, "Playback" },
++ { "AOUTR", NULL, "Playback" },
};
/**
diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c
-index 7b7a380..e3e7641 100644
+index e3e7641..7b7a380 100644
--- a/sound/soc/intel/skylake/skl.c
+++ b/sound/soc/intel/skylake/skl.c
-@@ -785,7 +785,8 @@ static void skl_remove(struct pci_dev *pci)
+@@ -785,8 +785,7 @@ static void skl_remove(struct pci_dev *pci)
release_firmware(skl->tplg);
-- pm_runtime_get_noresume(&pci->dev);
-+ if (pci_dev_run_wake(pci))
-+ pm_runtime_get_noresume(&pci->dev);
+- if (pci_dev_run_wake(pci))
+- pm_runtime_get_noresume(&pci->dev);
++ pm_runtime_get_noresume(&pci->dev);
/* codec removal, invoke bus_device_remove */
snd_hdac_ext_bus_device_remove(ebus);
diff --git a/sound/soc/sunxi/sun4i-codec.c b/sound/soc/sunxi/sun4i-codec.c
-index 03c18db..44f170c 100644
+index 44f170c..03c18db 100644
--- a/sound/soc/sunxi/sun4i-codec.c
+++ b/sound/soc/sunxi/sun4i-codec.c
@@ -738,11 +738,11 @@ static struct snd_soc_card *sun4i_codec_create_card(struct device *dev)
card = devm_kzalloc(dev, sizeof(*card), GFP_KERNEL);
if (!card)
-- return ERR_PTR(-ENOMEM);
-+ return NULL;
+- return NULL;
++ return ERR_PTR(-ENOMEM);
card->dai_link = sun4i_codec_create_link(dev, &card->num_links);
if (!card->dai_link)
-- return ERR_PTR(-ENOMEM);
-+ return NULL;
+- return NULL;
++ return ERR_PTR(-ENOMEM);
card->dev = dev;
card->name = "sun4i-codec";
-@@ -842,8 +842,7 @@ static int sun4i_codec_probe(struct platform_device *pdev)
+@@ -842,7 +842,8 @@ static int sun4i_codec_probe(struct platform_device *pdev)
}
card = sun4i_codec_create_card(&pdev->dev);
-- if (IS_ERR(card)) {
-- ret = PTR_ERR(card);
-+ if (!card) {
+- if (!card) {
++ if (IS_ERR(card)) {
++ ret = PTR_ERR(card);
dev_err(&pdev->dev, "Failed to create our card\n");
goto err_unregister_codec;
}
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
-index 4ad1eac..7aee954 100644
+index 7aee954..4ad1eac 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
-@@ -595,8 +595,7 @@ int hist_browser__run(struct hist_browser *browser, const char *help)
+@@ -595,7 +595,8 @@ int hist_browser__run(struct hist_browser *browser, const char *help)
u64 nr_entries;
hbt->timer(hbt->arg);
-- if (hist_browser__has_filter(browser) ||
-- symbol_conf.report_hierarchy)
-+ if (hist_browser__has_filter(browser))
+- if (hist_browser__has_filter(browser))
++ if (hist_browser__has_filter(browser) ||
++ symbol_conf.report_hierarchy)
hist_browser__update_nr_entries(browser);
nr_entries = hist_browser__nr_entries(browser);
diff --git a/tools/power/cpupower/utils/cpufreq-set.c b/tools/power/cpupower/utils/cpufreq-set.c
-index 1eef0ae..b4bf769 100644
+index b4bf769..1eef0ae 100644
--- a/tools/power/cpupower/utils/cpufreq-set.c
+++ b/tools/power/cpupower/utils/cpufreq-set.c
@@ -296,7 +296,7 @@ int cmd_freq_set(int argc, char **argv)
struct cpufreq_affected_cpus *cpus;
if (!bitmask_isbitset(cpus_chosen, cpu) ||
-- cpupower_is_cpu_online(cpu) != 1)
-+ cpupower_is_cpu_online(cpu))
+- cpupower_is_cpu_online(cpu))
++ cpupower_is_cpu_online(cpu) != 1)
continue;
cpus = cpufreq_get_related_cpus(cpu);
-@@ -316,7 +316,10 @@ int cmd_freq_set(int argc, char **argv)
+@@ -316,10 +316,7 @@ int cmd_freq_set(int argc, char **argv)
cpu <= bitmask_last(cpus_chosen); cpu++) {
if (!bitmask_isbitset(cpus_chosen, cpu) ||
-- cpupower_is_cpu_online(cpu) != 1)
-+ cpupower_is_cpu_online(cpu))
-+ continue;
-+
-+ if (cpupower_is_cpu_online(cpu) != 1)
+- cpupower_is_cpu_online(cpu))
+- continue;
+-
+- if (cpupower_is_cpu_online(cpu) != 1)
++ cpupower_is_cpu_online(cpu) != 1)
continue;
printf(_("Setting cpu: %d\n"), cpu);
diff --git a/virt/kvm/arm/vgic/vgic-mmio.c b/virt/kvm/arm/vgic/vgic-mmio.c
-index d1b080c..3bad3c5 100644
+index 3bad3c5..d1b080c 100644
--- a/virt/kvm/arm/vgic/vgic-mmio.c
+++ b/virt/kvm/arm/vgic/vgic-mmio.c
-@@ -453,33 +453,17 @@ struct vgic_io_device *kvm_to_vgic_iodev(const struct kvm_io_device *dev)
+@@ -453,17 +453,33 @@ struct vgic_io_device *kvm_to_vgic_iodev(const struct kvm_io_device *dev)
return container_of(dev, struct vgic_io_device, dev);
}
--static bool check_region(const struct kvm *kvm,
-- const struct vgic_register_region *region,
-+static bool check_region(const struct vgic_register_region *region,
+-static bool check_region(const struct vgic_register_region *region,
++static bool check_region(const struct kvm *kvm,
++ const struct vgic_register_region *region,
gpa_t addr, int len)
{
-- int flags, nr_irqs = kvm->arch.vgic.nr_spis + VGIC_NR_PRIVATE_IRQS;
--
-- switch (len) {
-- case sizeof(u8):
-- flags = VGIC_ACCESS_8bit;
-- break;
-- case sizeof(u32):
-- flags = VGIC_ACCESS_32bit;
-- break;
-- case sizeof(u64):
-- flags = VGIC_ACCESS_64bit;
-- break;
-- default:
-- return false;
-- }
--
-- if ((region->access_flags & flags) && IS_ALIGNED(addr, len)) {
-- if (!region->bits_per_irq)
-- return true;
--
-- /* Do we access a non-allocated IRQ? */
-- return VGIC_ADDR_TO_INTID(addr, region->bits_per_irq) < nr_irqs;
-- }
-+ if ((region->access_flags & VGIC_ACCESS_8bit) && len == 1)
-+ return true;
-+ if ((region->access_flags & VGIC_ACCESS_32bit) &&
-+ len == sizeof(u32) && !(addr & 3))
-+ return true;
-+ if ((region->access_flags & VGIC_ACCESS_64bit) &&
-+ len == sizeof(u64) && !(addr & 7))
-+ return true;
+- if ((region->access_flags & VGIC_ACCESS_8bit) && len == 1)
+- return true;
+- if ((region->access_flags & VGIC_ACCESS_32bit) &&
+- len == sizeof(u32) && !(addr & 3))
+- return true;
+- if ((region->access_flags & VGIC_ACCESS_64bit) &&
+- len == sizeof(u64) && !(addr & 7))
+- return true;
++ int flags, nr_irqs = kvm->arch.vgic.nr_spis + VGIC_NR_PRIVATE_IRQS;
++
++ switch (len) {
++ case sizeof(u8):
++ flags = VGIC_ACCESS_8bit;
++ break;
++ case sizeof(u32):
++ flags = VGIC_ACCESS_32bit;
++ break;
++ case sizeof(u64):
++ flags = VGIC_ACCESS_64bit;
++ break;
++ default:
++ return false;
++ }
++
++ if ((region->access_flags & flags) && IS_ALIGNED(addr, len)) {
++ if (!region->bits_per_irq)
++ return true;
++
++ /* Do we access a non-allocated IRQ? */
++ return VGIC_ADDR_TO_INTID(addr, region->bits_per_irq) < nr_irqs;
++ }
return false;
}
-@@ -493,7 +477,7 @@ static int dispatch_mmio_read(struct kvm_vcpu *vcpu, struct kvm_io_device *dev,
+@@ -477,7 +493,7 @@ static int dispatch_mmio_read(struct kvm_vcpu *vcpu, struct kvm_io_device *dev,
region = vgic_find_mmio_region(iodev->regions, iodev->nr_regions,
addr - iodev->base_addr);
-- if (!region || !check_region(vcpu->kvm, region, addr, len)) {
-+ if (!region || !check_region(region, addr, len)) {
+- if (!region || !check_region(region, addr, len)) {
++ if (!region || !check_region(vcpu->kvm, region, addr, len)) {
memset(val, 0, len);
return 0;
}
-@@ -526,7 +510,10 @@ static int dispatch_mmio_write(struct kvm_vcpu *vcpu, struct kvm_io_device *dev,
+@@ -510,10 +526,7 @@ static int dispatch_mmio_write(struct kvm_vcpu *vcpu, struct kvm_io_device *dev,
region = vgic_find_mmio_region(iodev->regions, iodev->nr_regions,
addr - iodev->base_addr);
-- if (!region || !check_region(vcpu->kvm, region, addr, len))
-+ if (!region)
-+ return 0;
-+
-+ if (!check_region(region, addr, len))
+- if (!region)
+- return 0;
+-
+- if (!check_region(region, addr, len))
++ if (!region || !check_region(vcpu->kvm, region, addr, len))
return 0;
switch (iodev->iodev_type) {
diff --git a/virt/kvm/arm/vgic/vgic-mmio.h b/virt/kvm/arm/vgic/vgic-mmio.h
-index ba63d91..0b3ecf9 100644
+index 0b3ecf9..ba63d91 100644
--- a/virt/kvm/arm/vgic/vgic-mmio.h
+++ b/virt/kvm/arm/vgic/vgic-mmio.h
@@ -50,15 +50,15 @@ extern struct kvm_io_device_ops kvm_io_gic_ops;
#define VGIC_ADDR_IRQ_MASK(bits) (((bits) * 1024 / 8) - 1)
/*
-- * (addr & mask) gives us the _byte_ offset for the INT ID.
-- * We multiply this by 8 the get the _bit_ offset, then divide this by
-- * the number of bits to learn the actual INT ID.
-- * But instead of a division (which requires a "long long div" implementation),
-- * we shift by the binary logarithm of <bits>.
-- * This assumes that <bits> is a power of two.
-+ * (addr & mask) gives us the byte offset for the INT ID, so we want to
-+ * divide this with 'bytes per irq' to get the INT ID, which is given
-+ * by '(bits) / 8'. But we do this with fixed-point-arithmetic and
-+ * take advantage of the fact that division by a fraction equals
-+ * multiplication with the inverted fraction, and scale up both the
-+ * numerator and denominator with 8 to support at most 64 bits per IRQ:
+- * (addr & mask) gives us the byte offset for the INT ID, so we want to
+- * divide this with 'bytes per irq' to get the INT ID, which is given
+- * by '(bits) / 8'. But we do this with fixed-point-arithmetic and
+- * take advantage of the fact that division by a fraction equals
+- * multiplication with the inverted fraction, and scale up both the
+- * numerator and denominator with 8 to support at most 64 bits per IRQ:
++ * (addr & mask) gives us the _byte_ offset for the INT ID.
++ * We multiply this by 8 the get the _bit_ offset, then divide this by
++ * the number of bits to learn the actual INT ID.
++ * But instead of a division (which requires a "long long div" implementation),
++ * we shift by the binary logarithm of <bits>.
++ * This assumes that <bits> is a power of two.
*/
#define VGIC_ADDR_TO_INTID(addr, bits) (((addr) & VGIC_ADDR_IRQ_MASK(bits)) * \
-- 8 >> ilog2(bits))
-+ 64 / (bits) / 8)
+- 64 / (bits) / 8)
++ 8 >> ilog2(bits))
/*
* Some VGIC registers store per-IRQ information, with a different number