Commit f837f0a3 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

Pull arm64 fixes from Catalin Marinas:

 - A couple of SME updates for recent fixes (one of which went to
   stable): reverting the flushing of the SME hardware state along with
   the thread flushing and making sure we have the correct vector length
   before reallocating.

 - An ACPI/IORT fix to avoid skipping ID mappings whose "number of IDs"
   is 0 (the spec reports the number of IDs in the mapping range minus
   1).

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  ACPI/IORT: Remove erroneous id_count check in iort_node_get_rmr_info()
  arm64/sme: Set new vector length before reallocating
  arm64/fpsimd: Don't flush SME register hardware state along with thread
parents 81eef890 003e6b56
...@@ -917,6 +917,8 @@ int vec_set_vector_length(struct task_struct *task, enum vec_type type, ...@@ -917,6 +917,8 @@ int vec_set_vector_length(struct task_struct *task, enum vec_type type,
if (task == current) if (task == current)
put_cpu_fpsimd_context(); put_cpu_fpsimd_context();
task_set_vl(task, type, vl);
/* /*
* Free the changed states if they are not in use, SME will be * Free the changed states if they are not in use, SME will be
* reallocated to the correct size on next use and we just * reallocated to the correct size on next use and we just
...@@ -931,8 +933,6 @@ int vec_set_vector_length(struct task_struct *task, enum vec_type type, ...@@ -931,8 +933,6 @@ int vec_set_vector_length(struct task_struct *task, enum vec_type type,
if (free_sme) if (free_sme)
sme_free(task); sme_free(task);
task_set_vl(task, type, vl);
out: out:
update_tsk_thread_flag(task, vec_vl_inherit_flag(type), update_tsk_thread_flag(task, vec_vl_inherit_flag(type),
flags & PR_SVE_VL_INHERIT); flags & PR_SVE_VL_INHERIT);
...@@ -1666,7 +1666,6 @@ void fpsimd_flush_thread(void) ...@@ -1666,7 +1666,6 @@ void fpsimd_flush_thread(void)
fpsimd_flush_thread_vl(ARM64_VEC_SME); fpsimd_flush_thread_vl(ARM64_VEC_SME);
current->thread.svcr = 0; current->thread.svcr = 0;
sme_smstop();
} }
current->thread.fp_type = FP_STATE_FPSIMD; current->thread.fp_type = FP_STATE_FPSIMD;
......
...@@ -1007,9 +1007,6 @@ static void iort_node_get_rmr_info(struct acpi_iort_node *node, ...@@ -1007,9 +1007,6 @@ static void iort_node_get_rmr_info(struct acpi_iort_node *node,
for (i = 0; i < node->mapping_count; i++, map++) { for (i = 0; i < node->mapping_count; i++, map++) {
struct acpi_iort_node *parent; struct acpi_iort_node *parent;
if (!map->id_count)
continue;
parent = ACPI_ADD_PTR(struct acpi_iort_node, iort_table, parent = ACPI_ADD_PTR(struct acpi_iort_node, iort_table,
map->output_reference); map->output_reference);
if (parent != iommu) if (parent != iommu)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment