Skip to content

Commit 6b69866

Browse files
author
Alex Shi
committed
Merge tag 'v4.4.58' into linux-linaro-lsk-v4.4
This is the 4.4.58 stable release
2 parents 6cfa28e + 0a5766a commit 6b69866

114 files changed

Lines changed: 988 additions & 514 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
VERSION = 4
22
PATCHLEVEL = 4
3-
SUBLEVEL = 56
3+
SUBLEVEL = 58
44
EXTRAVERSION =
55
NAME = Blurry Fish Butt
66

arch/arm/boot/dts/sama5d2.dtsi

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -856,6 +856,13 @@
856856
compatible = "atmel,at91sam9260-usart";
857857
reg = <0xf801c000 0x100>;
858858
interrupts = <24 IRQ_TYPE_LEVEL_HIGH 7>;
859+
dmas = <&dma0
860+
(AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
861+
AT91_XDMAC_DT_PERID(35))>,
862+
<&dma0
863+
(AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
864+
AT91_XDMAC_DT_PERID(36))>;
865+
dma-names = "tx", "rx";
859866
clocks = <&uart0_clk>;
860867
clock-names = "usart";
861868
status = "disabled";
@@ -865,6 +872,13 @@
865872
compatible = "atmel,at91sam9260-usart";
866873
reg = <0xf8020000 0x100>;
867874
interrupts = <25 IRQ_TYPE_LEVEL_HIGH 7>;
875+
dmas = <&dma0
876+
(AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
877+
AT91_XDMAC_DT_PERID(37))>,
878+
<&dma0
879+
(AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
880+
AT91_XDMAC_DT_PERID(38))>;
881+
dma-names = "tx", "rx";
868882
clocks = <&uart1_clk>;
869883
clock-names = "usart";
870884
status = "disabled";
@@ -874,6 +888,13 @@
874888
compatible = "atmel,at91sam9260-usart";
875889
reg = <0xf8024000 0x100>;
876890
interrupts = <26 IRQ_TYPE_LEVEL_HIGH 7>;
891+
dmas = <&dma0
892+
(AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
893+
AT91_XDMAC_DT_PERID(39))>,
894+
<&dma0
895+
(AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
896+
AT91_XDMAC_DT_PERID(40))>;
897+
dma-names = "tx", "rx";
877898
clocks = <&uart2_clk>;
878899
clock-names = "usart";
879900
status = "disabled";
@@ -985,6 +1006,13 @@
9851006
compatible = "atmel,at91sam9260-usart";
9861007
reg = <0xfc008000 0x100>;
9871008
interrupts = <27 IRQ_TYPE_LEVEL_HIGH 7>;
1009+
dmas = <&dma0
1010+
(AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
1011+
AT91_XDMAC_DT_PERID(41))>,
1012+
<&dma0
1013+
(AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
1014+
AT91_XDMAC_DT_PERID(42))>;
1015+
dma-names = "tx", "rx";
9881016
clocks = <&uart3_clk>;
9891017
clock-names = "usart";
9901018
status = "disabled";
@@ -993,6 +1021,13 @@
9931021
uart4: serial@fc00c000 {
9941022
compatible = "atmel,at91sam9260-usart";
9951023
reg = <0xfc00c000 0x100>;
1024+
dmas = <&dma0
1025+
(AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
1026+
AT91_XDMAC_DT_PERID(43))>,
1027+
<&dma0
1028+
(AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
1029+
AT91_XDMAC_DT_PERID(44))>;
1030+
dma-names = "tx", "rx";
9961031
interrupts = <28 IRQ_TYPE_LEVEL_HIGH 7>;
9971032
clocks = <&uart4_clk>;
9981033
clock-names = "usart";

arch/arm/mach-at91/pm.c

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,22 @@ static void at91_ddr_standby(void)
286286
at91_ramc_write(1, AT91_DDRSDRC_LPR, saved_lpr1);
287287
}
288288

289+
static void sama5d3_ddr_standby(void)
290+
{
291+
u32 lpr0;
292+
u32 saved_lpr0;
293+
294+
saved_lpr0 = at91_ramc_read(0, AT91_DDRSDRC_LPR);
295+
lpr0 = saved_lpr0 & ~AT91_DDRSDRC_LPCB;
296+
lpr0 |= AT91_DDRSDRC_LPCB_POWER_DOWN;
297+
298+
at91_ramc_write(0, AT91_DDRSDRC_LPR, lpr0);
299+
300+
cpu_do_idle();
301+
302+
at91_ramc_write(0, AT91_DDRSDRC_LPR, saved_lpr0);
303+
}
304+
289305
/* We manage both DDRAM/SDRAM controllers, we need more than one value to
290306
* remember.
291307
*/
@@ -320,7 +336,7 @@ static const struct of_device_id const ramc_ids[] __initconst = {
320336
{ .compatible = "atmel,at91rm9200-sdramc", .data = at91rm9200_standby },
321337
{ .compatible = "atmel,at91sam9260-sdramc", .data = at91sam9_sdram_standby },
322338
{ .compatible = "atmel,at91sam9g45-ddramc", .data = at91_ddr_standby },
323-
{ .compatible = "atmel,sama5d3-ddramc", .data = at91_ddr_standby },
339+
{ .compatible = "atmel,sama5d3-ddramc", .data = sama5d3_ddr_standby },
324340
{ /*sentinel*/ }
325341
};
326342

arch/powerpc/boot/zImage.lds.S

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ SECTIONS
6868
}
6969

7070
#ifdef CONFIG_PPC64_BOOT_WRAPPER
71+
. = ALIGN(256);
7172
.got :
7273
{
7374
__toc_start = .;

arch/powerpc/kvm/emulate.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,6 @@ int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu)
302302
advance = 0;
303303
printk(KERN_ERR "Couldn't emulate instruction 0x%08x "
304304
"(op %d xop %d)\n", inst, get_op(inst), get_xop(inst));
305-
kvmppc_core_queue_program(vcpu, 0);
306305
}
307306
}
308307

arch/s390/pci/pci_dma.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,7 @@ int zpci_dma_init_device(struct zpci_dev *zdev)
455455
zdev->dma_table = dma_alloc_cpu_table();
456456
if (!zdev->dma_table) {
457457
rc = -ENOMEM;
458-
goto out_clean;
458+
goto out;
459459
}
460460

461461
/*
@@ -475,18 +475,22 @@ int zpci_dma_init_device(struct zpci_dev *zdev)
475475
zdev->iommu_bitmap = vzalloc(zdev->iommu_pages / 8);
476476
if (!zdev->iommu_bitmap) {
477477
rc = -ENOMEM;
478-
goto out_reg;
478+
goto free_dma_table;
479479
}
480480

481481
rc = zpci_register_ioat(zdev, 0, zdev->start_dma, zdev->end_dma,
482482
(u64) zdev->dma_table);
483483
if (rc)
484-
goto out_reg;
485-
return 0;
484+
goto free_bitmap;
486485

487-
out_reg:
486+
return 0;
487+
free_bitmap:
488+
vfree(zdev->iommu_bitmap);
489+
zdev->iommu_bitmap = NULL;
490+
free_dma_table:
488491
dma_free_cpu_table(zdev->dma_table);
489-
out_clean:
492+
zdev->dma_table = NULL;
493+
out:
490494
return rc;
491495
}
492496

arch/x86/crypto/ghash-clmulni-intel_glue.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,29 @@ static int ghash_async_final(struct ahash_request *req)
219219
}
220220
}
221221

222+
static int ghash_async_import(struct ahash_request *req, const void *in)
223+
{
224+
struct ahash_request *cryptd_req = ahash_request_ctx(req);
225+
struct shash_desc *desc = cryptd_shash_desc(cryptd_req);
226+
struct ghash_desc_ctx *dctx = shash_desc_ctx(desc);
227+
228+
ghash_async_init(req);
229+
memcpy(dctx, in, sizeof(*dctx));
230+
return 0;
231+
232+
}
233+
234+
static int ghash_async_export(struct ahash_request *req, void *out)
235+
{
236+
struct ahash_request *cryptd_req = ahash_request_ctx(req);
237+
struct shash_desc *desc = cryptd_shash_desc(cryptd_req);
238+
struct ghash_desc_ctx *dctx = shash_desc_ctx(desc);
239+
240+
memcpy(out, dctx, sizeof(*dctx));
241+
return 0;
242+
243+
}
244+
222245
static int ghash_async_digest(struct ahash_request *req)
223246
{
224247
struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
@@ -288,8 +311,11 @@ static struct ahash_alg ghash_async_alg = {
288311
.final = ghash_async_final,
289312
.setkey = ghash_async_setkey,
290313
.digest = ghash_async_digest,
314+
.export = ghash_async_export,
315+
.import = ghash_async_import,
291316
.halg = {
292317
.digestsize = GHASH_DIGEST_SIZE,
318+
.statesize = sizeof(struct ghash_desc_ctx),
293319
.base = {
294320
.cra_name = "ghash",
295321
.cra_driver_name = "ghash-clmulni",

arch/x86/kernel/cpu/mshyperv.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include <asm/apic.h>
3131
#include <asm/timer.h>
3232
#include <asm/reboot.h>
33+
#include <asm/nmi.h>
3334

3435
struct ms_hyperv_info ms_hyperv;
3536
EXPORT_SYMBOL_GPL(ms_hyperv);
@@ -157,6 +158,26 @@ static unsigned char hv_get_nmi_reason(void)
157158
return 0;
158159
}
159160

161+
#ifdef CONFIG_X86_LOCAL_APIC
162+
/*
163+
* Prior to WS2016 Debug-VM sends NMIs to all CPUs which makes
164+
* it dificult to process CHANNELMSG_UNLOAD in case of crash. Handle
165+
* unknown NMI on the first CPU which gets it.
166+
*/
167+
static int hv_nmi_unknown(unsigned int val, struct pt_regs *regs)
168+
{
169+
static atomic_t nmi_cpu = ATOMIC_INIT(-1);
170+
171+
if (!unknown_nmi_panic)
172+
return NMI_DONE;
173+
174+
if (atomic_cmpxchg(&nmi_cpu, -1, raw_smp_processor_id()) != -1)
175+
return NMI_HANDLED;
176+
177+
return NMI_DONE;
178+
}
179+
#endif
180+
160181
static void __init ms_hyperv_init_platform(void)
161182
{
162183
/*
@@ -182,6 +203,9 @@ static void __init ms_hyperv_init_platform(void)
182203
printk(KERN_INFO "HyperV: LAPIC Timer Frequency: %#x\n",
183204
lapic_timer_frequency);
184205
}
206+
207+
register_nmi_handler(NMI_UNKNOWN, hv_nmi_unknown, NMI_FLAG_FIRST,
208+
"hv_nmi_unknown");
185209
#endif
186210

187211
if (ms_hyperv.features & HV_X64_MSR_TIME_REF_COUNT_AVAILABLE)

arch/x86/pci/xen.c

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -231,23 +231,14 @@ static int xen_hvm_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
231231
return 1;
232232

233233
for_each_pci_msi_entry(msidesc, dev) {
234-
__pci_read_msi_msg(msidesc, &msg);
235-
pirq = MSI_ADDR_EXT_DEST_ID(msg.address_hi) |
236-
((msg.address_lo >> MSI_ADDR_DEST_ID_SHIFT) & 0xff);
237-
if (msg.data != XEN_PIRQ_MSI_DATA ||
238-
xen_irq_from_pirq(pirq) < 0) {
239-
pirq = xen_allocate_pirq_msi(dev, msidesc);
240-
if (pirq < 0) {
241-
irq = -ENODEV;
242-
goto error;
243-
}
244-
xen_msi_compose_msg(dev, pirq, &msg);
245-
__pci_write_msi_msg(msidesc, &msg);
246-
dev_dbg(&dev->dev, "xen: msi bound to pirq=%d\n", pirq);
247-
} else {
248-
dev_dbg(&dev->dev,
249-
"xen: msi already bound to pirq=%d\n", pirq);
234+
pirq = xen_allocate_pirq_msi(dev, msidesc);
235+
if (pirq < 0) {
236+
irq = -ENODEV;
237+
goto error;
250238
}
239+
xen_msi_compose_msg(dev, pirq, &msg);
240+
__pci_write_msi_msg(msidesc, &msg);
241+
dev_dbg(&dev->dev, "xen: msi bound to pirq=%d\n", pirq);
251242
irq = xen_bind_pirq_msi_to_irq(dev, msidesc, pirq,
252243
(type == PCI_CAP_ID_MSI) ? nvec : 1,
253244
(type == PCI_CAP_ID_MSIX) ?

arch/x86/xen/spinlock.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ static bool xen_pvspin = true;
2727

2828
static void xen_qlock_kick(int cpu)
2929
{
30+
int irq = per_cpu(lock_kicker_irq, cpu);
31+
32+
/* Don't kick if the target's kicker interrupt is not initialized. */
33+
if (irq == -1)
34+
return;
35+
3036
xen_send_IPI_one(cpu, XEN_SPIN_UNLOCK_VECTOR);
3137
}
3238

0 commit comments

Comments
 (0)