mirror of
https://github.com/Fishwaldo/build.git
synced 2025-03-15 11:21:29 +00:00
Update broken upstream patches
This commit is contained in:
parent
973407893a
commit
789fe94137
2 changed files with 0 additions and 324 deletions
|
@ -633,53 +633,6 @@ index 27ba476f761d..4fc3468f6f38 100644
|
|||
iids->tids += vf_tids * p_mngr->vf_count;
|
||||
|
||||
DP_VERBOSE(p_hwfn, QED_MSG_ILT,
|
||||
diff --git a/drivers/net/ethernet/qlogic/qed/qed_vf.c b/drivers/net/ethernet/qlogic/qed/qed_vf.c
|
||||
index a2a9921b467b..693f2a039383 100644
|
||||
--- a/drivers/net/ethernet/qlogic/qed/qed_vf.c
|
||||
+++ b/drivers/net/ethernet/qlogic/qed/qed_vf.c
|
||||
@@ -81,12 +81,17 @@ static void qed_vf_pf_req_end(struct qed_hwfn *p_hwfn, int req_status)
|
||||
mutex_unlock(&(p_hwfn->vf_iov_info->mutex));
|
||||
}
|
||||
|
||||
+#define QED_VF_CHANNEL_USLEEP_ITERATIONS 90
|
||||
+#define QED_VF_CHANNEL_USLEEP_DELAY 100
|
||||
+#define QED_VF_CHANNEL_MSLEEP_ITERATIONS 10
|
||||
+#define QED_VF_CHANNEL_MSLEEP_DELAY 25
|
||||
+
|
||||
static int qed_send_msg2pf(struct qed_hwfn *p_hwfn, u8 *done, u32 resp_size)
|
||||
{
|
||||
union vfpf_tlvs *p_req = p_hwfn->vf_iov_info->vf2pf_request;
|
||||
struct ustorm_trigger_vf_zone trigger;
|
||||
struct ustorm_vf_zone *zone_data;
|
||||
- int rc = 0, time = 100;
|
||||
+ int iter, rc = 0;
|
||||
|
||||
zone_data = (struct ustorm_vf_zone *)PXP_VF_BAR0_START_USDM_ZONE_B;
|
||||
|
||||
@@ -126,11 +131,19 @@ static int qed_send_msg2pf(struct qed_hwfn *p_hwfn, u8 *done, u32 resp_size)
|
||||
REG_WR(p_hwfn, (uintptr_t)&zone_data->trigger, *((u32 *)&trigger));
|
||||
|
||||
/* When PF would be done with the response, it would write back to the
|
||||
- * `done' address. Poll until then.
|
||||
+ * `done' address from a coherent DMA zone. Poll until then.
|
||||
*/
|
||||
- while ((!*done) && time) {
|
||||
- msleep(25);
|
||||
- time--;
|
||||
+
|
||||
+ iter = QED_VF_CHANNEL_USLEEP_ITERATIONS;
|
||||
+ while (!*done && iter--) {
|
||||
+ udelay(QED_VF_CHANNEL_USLEEP_DELAY);
|
||||
+ dma_rmb();
|
||||
+ }
|
||||
+
|
||||
+ iter = QED_VF_CHANNEL_MSLEEP_ITERATIONS;
|
||||
+ while (!*done && iter--) {
|
||||
+ msleep(QED_VF_CHANNEL_MSLEEP_DELAY);
|
||||
+ dma_rmb();
|
||||
}
|
||||
|
||||
if (!*done) {
|
||||
diff --git a/drivers/net/ethernet/rocker/rocker_main.c b/drivers/net/ethernet/rocker/rocker_main.c
|
||||
index 056cb6093630..8ad05e500829 100644
|
||||
--- a/drivers/net/ethernet/rocker/rocker_main.c
|
|
@ -11,26 +11,6 @@ index 10314ba3c7bc5..7537adc4e237d 100644
|
|||
EXTRAVERSION =
|
||||
NAME = Petit Gorille
|
||||
|
||||
diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c
|
||||
index acbede082b5b5..79a59fe0e773b 100644
|
||||
--- a/arch/arm/mach-omap2/omap_device.c
|
||||
+++ b/arch/arm/mach-omap2/omap_device.c
|
||||
@@ -224,10 +224,12 @@ static int _omap_device_notifier_call(struct notifier_block *nb,
|
||||
break;
|
||||
case BUS_NOTIFY_BIND_DRIVER:
|
||||
od = to_omap_device(pdev);
|
||||
- if (od && (od->_state == OMAP_DEVICE_STATE_ENABLED) &&
|
||||
- pm_runtime_status_suspended(dev)) {
|
||||
+ if (od) {
|
||||
od->_driver_status = BUS_NOTIFY_BIND_DRIVER;
|
||||
- pm_runtime_set_active(dev);
|
||||
+ if (od->_state == OMAP_DEVICE_STATE_ENABLED &&
|
||||
+ pm_runtime_status_suspended(dev)) {
|
||||
+ pm_runtime_set_active(dev);
|
||||
+ }
|
||||
}
|
||||
break;
|
||||
case BUS_NOTIFY_ADD_DEVICE:
|
||||
diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
|
||||
index c553f9883194f..1a006101f527a 100644
|
||||
--- a/arch/arm64/kvm/sys_regs.c
|
||||
|
@ -46,173 +26,6 @@ index c553f9883194f..1a006101f527a 100644
|
|||
pmcr = read_sysreg(pmcr_el0);
|
||||
/*
|
||||
* Writable bits of PMCR_EL0 (ARMV8_PMU_PMCR_MASK) are reset to UNKNOWN
|
||||
diff --git a/arch/powerpc/include/asm/book3s/32/pgtable.h b/arch/powerpc/include/asm/book3s/32/pgtable.h
|
||||
index 016579ef16d3d..ec98abca0df03 100644
|
||||
--- a/arch/powerpc/include/asm/book3s/32/pgtable.h
|
||||
+++ b/arch/powerpc/include/asm/book3s/32/pgtable.h
|
||||
@@ -414,9 +414,9 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
|
||||
if (pte_val(*ptep) & _PAGE_HASHPTE)
|
||||
flush_hash_entry(mm, ptep, addr);
|
||||
__asm__ __volatile__("\
|
||||
- stw%U0%X0 %2,%0\n\
|
||||
+ stw%X0 %2,%0\n\
|
||||
eieio\n\
|
||||
- stw%U0%X0 %L2,%1"
|
||||
+ stw%X1 %L2,%1"
|
||||
: "=m" (*ptep), "=m" (*((unsigned char *)ptep+4))
|
||||
: "r" (pte) : "memory");
|
||||
|
||||
diff --git a/arch/powerpc/include/asm/nohash/pgtable.h b/arch/powerpc/include/asm/nohash/pgtable.h
|
||||
index 5c68f4a59f758..e9171b8242e4b 100644
|
||||
--- a/arch/powerpc/include/asm/nohash/pgtable.h
|
||||
+++ b/arch/powerpc/include/asm/nohash/pgtable.h
|
||||
@@ -157,9 +157,9 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
|
||||
flush_hash_entry(mm, ptep, addr);
|
||||
#endif
|
||||
__asm__ __volatile__("\
|
||||
- stw%U0%X0 %2,%0\n\
|
||||
+ stw%X0 %2,%0\n\
|
||||
eieio\n\
|
||||
- stw%U0%X0 %L2,%1"
|
||||
+ stw%X1 %L2,%1"
|
||||
: "=m" (*ptep), "=m" (*((unsigned char *)ptep+4))
|
||||
: "r" (pte) : "memory");
|
||||
|
||||
diff --git a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
|
||||
index bb33888151fb0..10d8f5cbb5107 100644
|
||||
--- a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
|
||||
+++ b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
|
||||
@@ -411,82 +411,68 @@ static void rdtgroup_remove(struct rdtgroup *rdtgrp)
|
||||
kfree(rdtgrp);
|
||||
}
|
||||
|
||||
-struct task_move_callback {
|
||||
- struct callback_head work;
|
||||
- struct rdtgroup *rdtgrp;
|
||||
-};
|
||||
-
|
||||
-static void move_myself(struct callback_head *head)
|
||||
+static void _update_task_closid_rmid(void *task)
|
||||
{
|
||||
- struct task_move_callback *callback;
|
||||
- struct rdtgroup *rdtgrp;
|
||||
-
|
||||
- callback = container_of(head, struct task_move_callback, work);
|
||||
- rdtgrp = callback->rdtgrp;
|
||||
-
|
||||
/*
|
||||
- * If resource group was deleted before this task work callback
|
||||
- * was invoked, then assign the task to root group and free the
|
||||
- * resource group.
|
||||
+ * If the task is still current on this CPU, update PQR_ASSOC MSR.
|
||||
+ * Otherwise, the MSR is updated when the task is scheduled in.
|
||||
*/
|
||||
- if (atomic_dec_and_test(&rdtgrp->waitcount) &&
|
||||
- (rdtgrp->flags & RDT_DELETED)) {
|
||||
- current->closid = 0;
|
||||
- current->rmid = 0;
|
||||
- rdtgroup_remove(rdtgrp);
|
||||
- }
|
||||
-
|
||||
- preempt_disable();
|
||||
- /* update PQR_ASSOC MSR to make resource group go into effect */
|
||||
- intel_rdt_sched_in();
|
||||
- preempt_enable();
|
||||
+ if (task == current)
|
||||
+ intel_rdt_sched_in();
|
||||
+}
|
||||
|
||||
- kfree(callback);
|
||||
+static void update_task_closid_rmid(struct task_struct *t)
|
||||
+{
|
||||
+ if (IS_ENABLED(CONFIG_SMP) && task_curr(t))
|
||||
+ smp_call_function_single(task_cpu(t), _update_task_closid_rmid, t, 1);
|
||||
+ else
|
||||
+ _update_task_closid_rmid(t);
|
||||
}
|
||||
|
||||
static int __rdtgroup_move_task(struct task_struct *tsk,
|
||||
struct rdtgroup *rdtgrp)
|
||||
{
|
||||
- struct task_move_callback *callback;
|
||||
- int ret;
|
||||
-
|
||||
- callback = kzalloc(sizeof(*callback), GFP_KERNEL);
|
||||
- if (!callback)
|
||||
- return -ENOMEM;
|
||||
- callback->work.func = move_myself;
|
||||
- callback->rdtgrp = rdtgrp;
|
||||
+ /* If the task is already in rdtgrp, no need to move the task. */
|
||||
+ if ((rdtgrp->type == RDTCTRL_GROUP && tsk->closid == rdtgrp->closid &&
|
||||
+ tsk->rmid == rdtgrp->mon.rmid) ||
|
||||
+ (rdtgrp->type == RDTMON_GROUP && tsk->rmid == rdtgrp->mon.rmid &&
|
||||
+ tsk->closid == rdtgrp->mon.parent->closid))
|
||||
+ return 0;
|
||||
|
||||
/*
|
||||
- * Take a refcount, so rdtgrp cannot be freed before the
|
||||
- * callback has been invoked.
|
||||
+ * Set the task's closid/rmid before the PQR_ASSOC MSR can be
|
||||
+ * updated by them.
|
||||
+ *
|
||||
+ * For ctrl_mon groups, move both closid and rmid.
|
||||
+ * For monitor groups, can move the tasks only from
|
||||
+ * their parent CTRL group.
|
||||
*/
|
||||
- atomic_inc(&rdtgrp->waitcount);
|
||||
- ret = task_work_add(tsk, &callback->work, true);
|
||||
- if (ret) {
|
||||
- /*
|
||||
- * Task is exiting. Drop the refcount and free the callback.
|
||||
- * No need to check the refcount as the group cannot be
|
||||
- * deleted before the write function unlocks rdtgroup_mutex.
|
||||
- */
|
||||
- atomic_dec(&rdtgrp->waitcount);
|
||||
- kfree(callback);
|
||||
- } else {
|
||||
- /*
|
||||
- * For ctrl_mon groups move both closid and rmid.
|
||||
- * For monitor groups, can move the tasks only from
|
||||
- * their parent CTRL group.
|
||||
- */
|
||||
- if (rdtgrp->type == RDTCTRL_GROUP) {
|
||||
- tsk->closid = rdtgrp->closid;
|
||||
+
|
||||
+ if (rdtgrp->type == RDTCTRL_GROUP) {
|
||||
+ tsk->closid = rdtgrp->closid;
|
||||
+ tsk->rmid = rdtgrp->mon.rmid;
|
||||
+ } else if (rdtgrp->type == RDTMON_GROUP) {
|
||||
+ if (rdtgrp->mon.parent->closid == tsk->closid)
|
||||
tsk->rmid = rdtgrp->mon.rmid;
|
||||
- } else if (rdtgrp->type == RDTMON_GROUP) {
|
||||
- if (rdtgrp->mon.parent->closid == tsk->closid)
|
||||
- tsk->rmid = rdtgrp->mon.rmid;
|
||||
- else
|
||||
- ret = -EINVAL;
|
||||
- }
|
||||
+ else
|
||||
+ return -EINVAL;
|
||||
}
|
||||
- return ret;
|
||||
+
|
||||
+ /*
|
||||
+ * Ensure the task's closid and rmid are written before determining if
|
||||
+ * the task is current that will decide if it will be interrupted.
|
||||
+ */
|
||||
+ barrier();
|
||||
+
|
||||
+ /*
|
||||
+ * By now, the task's closid and rmid are set. If the task is current
|
||||
+ * on a CPU, the PQR_ASSOC MSR needs to be updated to make the resource
|
||||
+ * group go into effect. If the task is not current, the MSR will be
|
||||
+ * updated when the task is scheduled in.
|
||||
+ */
|
||||
+ update_task_closid_rmid(tsk);
|
||||
+
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
static int rdtgroup_task_write_permission(struct task_struct *task,
|
||||
diff --git a/block/genhd.c b/block/genhd.c
|
||||
index 449ef56bba708..3958ae39daebf 100644
|
||||
--- a/block/genhd.c
|
||||
|
@ -250,80 +63,6 @@ index 7b2df7a54d875..01091c08e9999 100644
|
|||
help
|
||||
Device driver for IBM's high speed PCIe SSD
|
||||
storage device: Flash Adapter 900GB Full Height.
|
||||
diff --git a/drivers/cpufreq/powernow-k8.c b/drivers/cpufreq/powernow-k8.c
|
||||
index 062d71434e470..32bb00a6fe099 100644
|
||||
--- a/drivers/cpufreq/powernow-k8.c
|
||||
+++ b/drivers/cpufreq/powernow-k8.c
|
||||
@@ -887,9 +887,9 @@ static int get_transition_latency(struct powernow_k8_data *data)
|
||||
|
||||
/* Take a frequency, and issue the fid/vid transition command */
|
||||
static int transition_frequency_fidvid(struct powernow_k8_data *data,
|
||||
- unsigned int index)
|
||||
+ unsigned int index,
|
||||
+ struct cpufreq_policy *policy)
|
||||
{
|
||||
- struct cpufreq_policy *policy;
|
||||
u32 fid = 0;
|
||||
u32 vid = 0;
|
||||
int res;
|
||||
@@ -921,9 +921,6 @@ static int transition_frequency_fidvid(struct powernow_k8_data *data,
|
||||
freqs.old = find_khz_freq_from_fid(data->currfid);
|
||||
freqs.new = find_khz_freq_from_fid(fid);
|
||||
|
||||
- policy = cpufreq_cpu_get(smp_processor_id());
|
||||
- cpufreq_cpu_put(policy);
|
||||
-
|
||||
cpufreq_freq_transition_begin(policy, &freqs);
|
||||
res = transition_fid_vid(data, fid, vid);
|
||||
cpufreq_freq_transition_end(policy, &freqs, res);
|
||||
@@ -978,7 +975,7 @@ static long powernowk8_target_fn(void *arg)
|
||||
|
||||
powernow_k8_acpi_pst_values(data, newstate);
|
||||
|
||||
- ret = transition_frequency_fidvid(data, newstate);
|
||||
+ ret = transition_frequency_fidvid(data, newstate, pol);
|
||||
|
||||
if (ret) {
|
||||
pr_err("transition frequency failed\n");
|
||||
diff --git a/drivers/dma/xilinx/xilinx_dma.c b/drivers/dma/xilinx/xilinx_dma.c
|
||||
index 314f175cf8d05..21203e3a54fda 100644
|
||||
--- a/drivers/dma/xilinx/xilinx_dma.c
|
||||
+++ b/drivers/dma/xilinx/xilinx_dma.c
|
||||
@@ -2360,7 +2360,7 @@ static int xilinx_dma_chan_probe(struct xilinx_dma_device *xdev,
|
||||
has_dre = false;
|
||||
|
||||
if (!has_dre)
|
||||
- xdev->common.copy_align = fls(width - 1);
|
||||
+ xdev->common.copy_align = (enum dmaengine_alignment)fls(width - 1);
|
||||
|
||||
if (of_device_is_compatible(node, "xlnx,axi-vdma-mm2s-channel") ||
|
||||
of_device_is_compatible(node, "xlnx,axi-dma-mm2s-channel") ||
|
||||
@@ -2637,7 +2637,11 @@ static int xilinx_dma_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
/* Register the DMA engine with the core */
|
||||
- dma_async_device_register(&xdev->common);
|
||||
+ err = dma_async_device_register(&xdev->common);
|
||||
+ if (err) {
|
||||
+ dev_err(xdev->dev, "failed to register the dma device\n");
|
||||
+ goto error;
|
||||
+ }
|
||||
|
||||
err = of_dma_controller_register(node, of_dma_xilinx_xlate,
|
||||
xdev);
|
||||
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
|
||||
index bf13299ebb558..d94fb7acfa556 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
|
||||
@@ -341,7 +341,7 @@ eb_vma_misplaced(const struct drm_i915_gem_exec_object2 *entry,
|
||||
return true;
|
||||
|
||||
if (!(flags & EXEC_OBJECT_SUPPORTS_48B_ADDRESS) &&
|
||||
- (vma->node.start + vma->node.size - 1) >> 32)
|
||||
+ (vma->node.start + vma->node.size + 4095) >> 32)
|
||||
return true;
|
||||
|
||||
if (flags & __EXEC_OBJECT_NEEDS_MAP &&
|
||||
diff --git a/drivers/i2c/busses/i2c-sprd.c b/drivers/i2c/busses/i2c-sprd.c
|
||||
index 4053259bccb8d..1925c89381194 100644
|
||||
--- a/drivers/i2c/busses/i2c-sprd.c
|
||||
|
@ -568,22 +307,6 @@ index 135e95950f513..5b4d4b1087c4d 100644
|
|||
|
||||
if (c->leb_size - wbuf->offs >= c->max_write_size)
|
||||
wbuf->size = c->max_write_size;
|
||||
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
|
||||
index 48e618b20d34b..404a19923ea76 100644
|
||||
--- a/include/asm-generic/vmlinux.lds.h
|
||||
+++ b/include/asm-generic/vmlinux.lds.h
|
||||
@@ -459,7 +459,10 @@
|
||||
*/
|
||||
#define TEXT_TEXT \
|
||||
ALIGN_FUNCTION(); \
|
||||
- *(.text.hot TEXT_MAIN .text.fixup .text.unlikely) \
|
||||
+ *(.text.hot .text.hot.*) \
|
||||
+ *(TEXT_MAIN .text.fixup) \
|
||||
+ *(.text.unlikely .text.unlikely.*) \
|
||||
+ *(.text.unknown .text.unknown.*) \
|
||||
*(.text..refcount) \
|
||||
*(.ref.text) \
|
||||
MEM_KEEP(init.text) \
|
||||
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
|
||||
index cf82d970b0e48..0efdf83f78e7a 100644
|
||||
--- a/net/8021q/vlan.c
|
||||
|
|
Loading…
Add table
Reference in a new issue