kernel: Update kernel 4.9 to 4.9.70
Runtime tested on lantiq. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
@@ -24281,15 +24281,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
#endif /* CAAM_ERROR_H */
|
||||
--- a/drivers/crypto/caam/intern.h
|
||||
+++ b/drivers/crypto/caam/intern.h
|
||||
@@ -41,6 +41,7 @@ struct caam_drv_private_jr {
|
||||
struct device *dev;
|
||||
int ridx;
|
||||
struct caam_job_ring __iomem *rregs; /* JobR's register space */
|
||||
+ struct tasklet_struct irqtask;
|
||||
int irq; /* One per queue */
|
||||
|
||||
/* Number of scatterlist crypt transforms active on the JobR */
|
||||
@@ -63,10 +64,9 @@ struct caam_drv_private_jr {
|
||||
@@ -64,10 +64,9 @@ struct caam_drv_private_jr {
|
||||
* Driver-private storage for a single CAAM block instance
|
||||
*/
|
||||
struct caam_drv_private {
|
||||
@@ -24303,7 +24295,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
|
||||
/* Physical-presence section */
|
||||
struct caam_ctrl __iomem *ctrl; /* controller region */
|
||||
@@ -102,11 +102,6 @@ struct caam_drv_private {
|
||||
@@ -103,11 +102,6 @@ struct caam_drv_private {
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
struct dentry *dfs_root;
|
||||
struct dentry *ctl; /* controller dir */
|
||||
@@ -24315,7 +24307,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
struct debugfs_blob_wrapper ctl_kek_wrap, ctl_tkek_wrap, ctl_tdsk_wrap;
|
||||
struct dentry *ctl_kek, *ctl_tkek, *ctl_tdsk;
|
||||
#endif
|
||||
@@ -114,4 +109,22 @@ struct caam_drv_private {
|
||||
@@ -115,4 +109,22 @@ struct caam_drv_private {
|
||||
|
||||
void caam_jr_algapi_init(struct device *dev);
|
||||
void caam_jr_algapi_remove(struct device *dev);
|
||||
@@ -24363,16 +24355,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
static int caam_reset_hw_jr(struct device *dev)
|
||||
{
|
||||
struct caam_drv_private_jr *jrp = dev_get_drvdata(dev);
|
||||
@@ -73,6 +82,8 @@ static int caam_jr_shutdown(struct devic
|
||||
|
||||
ret = caam_reset_hw_jr(dev);
|
||||
|
||||
+ tasklet_kill(&jrp->irqtask);
|
||||
+
|
||||
/* Release interrupt */
|
||||
free_irq(jrp->irq, dev);
|
||||
|
||||
@@ -116,6 +127,8 @@ static int caam_jr_remove(struct platfor
|
||||
@@ -118,6 +127,8 @@ static int caam_jr_remove(struct platfor
|
||||
dev_err(jrdev, "Failed to shut down job ring\n");
|
||||
irq_dispose_mapping(jrpriv->irq);
|
||||
|
||||
@@ -24381,47 +24364,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -128,7 +141,7 @@ static irqreturn_t caam_jr_interrupt(int
|
||||
|
||||
/*
|
||||
* Check the output ring for ready responses, kick
|
||||
- * the threaded irq if jobs done.
|
||||
+ * tasklet if jobs done.
|
||||
*/
|
||||
irqstate = rd_reg32(&jrp->rregs->jrintstatus);
|
||||
if (!irqstate)
|
||||
@@ -150,13 +163,18 @@ static irqreturn_t caam_jr_interrupt(int
|
||||
/* Have valid interrupt at this point, just ACK and trigger */
|
||||
wr_reg32(&jrp->rregs->jrintstatus, irqstate);
|
||||
|
||||
- return IRQ_WAKE_THREAD;
|
||||
+ preempt_disable();
|
||||
+ tasklet_schedule(&jrp->irqtask);
|
||||
+ preempt_enable();
|
||||
+
|
||||
+ return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
-static irqreturn_t caam_jr_threadirq(int irq, void *st_dev)
|
||||
+/* Deferred service handler, run as interrupt-fired tasklet */
|
||||
+static void caam_jr_dequeue(unsigned long devarg)
|
||||
{
|
||||
int hw_idx, sw_idx, i, head, tail;
|
||||
- struct device *dev = st_dev;
|
||||
+ struct device *dev = (struct device *)devarg;
|
||||
struct caam_drv_private_jr *jrp = dev_get_drvdata(dev);
|
||||
void (*usercall)(struct device *dev, u32 *desc, u32 status, void *arg);
|
||||
u32 *userdesc, userstatus;
|
||||
@@ -230,8 +248,6 @@ static irqreturn_t caam_jr_threadirq(int
|
||||
|
||||
/* reenable / unmask IRQs */
|
||||
clrsetbits_32(&jrp->rregs->rconfig_lo, JRCFG_IMSK, 0);
|
||||
-
|
||||
- return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -275,6 +291,36 @@ struct device *caam_jr_alloc(void)
|
||||
@@ -280,6 +291,36 @@ struct device *caam_jr_alloc(void)
|
||||
EXPORT_SYMBOL(caam_jr_alloc);
|
||||
|
||||
/**
|
||||
@@ -24458,30 +24401,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
* caam_jr_free() - Free the Job Ring
|
||||
* @rdev - points to the dev that identifies the Job ring to
|
||||
* be released.
|
||||
@@ -389,10 +435,11 @@ static int caam_jr_init(struct device *d
|
||||
|
||||
jrp = dev_get_drvdata(dev);
|
||||
|
||||
+ tasklet_init(&jrp->irqtask, caam_jr_dequeue, (unsigned long)dev);
|
||||
+
|
||||
/* Connect job ring interrupt handler. */
|
||||
- error = request_threaded_irq(jrp->irq, caam_jr_interrupt,
|
||||
- caam_jr_threadirq, IRQF_SHARED,
|
||||
- dev_name(dev), dev);
|
||||
+ error = request_irq(jrp->irq, caam_jr_interrupt, IRQF_SHARED,
|
||||
+ dev_name(dev), dev);
|
||||
if (error) {
|
||||
dev_err(dev, "can't connect JobR %d interrupt (%d)\n",
|
||||
jrp->ridx, jrp->irq);
|
||||
@@ -454,6 +501,7 @@ out_free_inpring:
|
||||
out_free_irq:
|
||||
free_irq(jrp->irq, dev);
|
||||
out_kill_deq:
|
||||
+ tasklet_kill(&jrp->irqtask);
|
||||
return error;
|
||||
}
|
||||
|
||||
@@ -489,15 +537,28 @@ static int caam_jr_probe(struct platform
|
||||
@@ -496,15 +537,28 @@ static int caam_jr_probe(struct platform
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@@ -24517,7 +24437,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
|
||||
/* Identify the interrupt */
|
||||
jrpriv->irq = irq_of_parse_and_map(nprop, 0);
|
||||
@@ -517,10 +578,12 @@ static int caam_jr_probe(struct platform
|
||||
@@ -524,10 +578,12 @@ static int caam_jr_probe(struct platform
|
||||
|
||||
atomic_set(&jrpriv->tfm_count, 0);
|
||||
|
||||
|
||||
@@ -27,10 +27,10 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
|
||||
+ disable_irq(fsl_dev->irq);
|
||||
+
|
||||
clk_disable_unprepare(fsl_dev->pix_clk);
|
||||
clk_disable_unprepare(fsl_dev->clk);
|
||||
|
||||
@@ -263,6 +264,14 @@ static int fsl_dcu_drm_pm_resume(struct
|
||||
return 0;
|
||||
@@ -262,6 +263,12 @@ static int fsl_dcu_drm_pm_resume(struct
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -39,21 +39,11 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
+ dev_err(dev, "failed to enable dcu pix clk\n");
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ enable_irq(fsl_dev->irq);
|
||||
+
|
||||
if (fsl_dev->tcon)
|
||||
fsl_tcon_bypass_enable(fsl_dev->tcon);
|
||||
fsl_dcu_drm_init_planes(fsl_dev->drm);
|
||||
@@ -273,7 +282,6 @@ static int fsl_dcu_drm_pm_resume(struct
|
||||
console_unlock();
|
||||
|
||||
drm_kms_helper_poll_enable(fsl_dev->drm);
|
||||
- enable_irq(fsl_dev->irq);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -389,6 +397,12 @@ static int fsl_dcu_drm_probe(struct plat
|
||||
@@ -388,6 +395,12 @@ static int fsl_dcu_drm_probe(struct plat
|
||||
goto disable_clk;
|
||||
}
|
||||
|
||||
|
||||
@@ -995,7 +995,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
};
|
||||
|
||||
struct dmar_atsr_unit {
|
||||
@@ -4250,27 +4251,40 @@ static inline void init_iommu_pm_ops(voi
|
||||
@@ -4252,27 +4253,40 @@ static inline void init_iommu_pm_ops(voi
|
||||
int __init dmar_parse_one_rmrr(struct acpi_dmar_header *header, void *arg)
|
||||
{
|
||||
struct acpi_dmar_reserved_memory *rmrr;
|
||||
@@ -1041,7 +1041,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
}
|
||||
|
||||
static struct dmar_atsr_unit *dmar_find_atsr(struct acpi_dmar_atsr *atsr)
|
||||
@@ -4484,6 +4498,7 @@ static void intel_iommu_free_dmars(void)
|
||||
@@ -4486,6 +4500,7 @@ static void intel_iommu_free_dmars(void)
|
||||
list_for_each_entry_safe(rmrru, rmrr_n, &dmar_rmrr_units, list) {
|
||||
list_del(&rmrru->list);
|
||||
dmar_free_dev_scope(&rmrru->devices, &rmrru->devices_cnt);
|
||||
@@ -1049,7 +1049,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
kfree(rmrru);
|
||||
}
|
||||
|
||||
@@ -5219,6 +5234,45 @@ static void intel_iommu_remove_device(st
|
||||
@@ -5221,6 +5236,45 @@ static void intel_iommu_remove_device(st
|
||||
iommu_device_unlink(iommu->iommu_dev, dev);
|
||||
}
|
||||
|
||||
@@ -1095,7 +1095,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
#ifdef CONFIG_INTEL_IOMMU_SVM
|
||||
#define MAX_NR_PASID_BITS (20)
|
||||
static inline unsigned long intel_iommu_get_pts(struct intel_iommu *iommu)
|
||||
@@ -5349,19 +5403,21 @@ struct intel_iommu *intel_svm_device_to_
|
||||
@@ -5351,19 +5405,21 @@ struct intel_iommu *intel_svm_device_to_
|
||||
#endif /* CONFIG_INTEL_IOMMU_SVM */
|
||||
|
||||
static const struct iommu_ops intel_iommu_ops = {
|
||||
|
||||
Reference in New Issue
Block a user