X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/b0d623f7f2ae71ed96e60569f61f9a9a27016e80..4d15aeb193b2c68f1d38666c317f8d3734f5f083:/osfmk/kern/affinity.c diff --git a/osfmk/kern/affinity.c b/osfmk/kern/affinity.c index eb5095459..8e6b3ee5a 100644 --- a/osfmk/kern/affinity.c +++ b/osfmk/kern/affinity.c @@ -79,6 +79,10 @@ static affinity_set_t affinity_set_remove(affinity_set_t aset, thread_t thread); * kern.affinity_sets_enabled - disables hinting if cleared * kern.affinity_sets_mapping - controls cache distribution policy * See bsd/kern_sysctl.c + * + * Affinity sets are not used on embedded, which typically only + * has a single pset, and last-processor affinity is + * more important than pset affinity. */ boolean_t affinity_sets_enabled = TRUE; int affinity_sets_mapping = 1; @@ -386,6 +390,7 @@ affinity_space_free(affinity_space_t aspc) { assert(queue_empty(&aspc->aspc_affinities)); + lck_mtx_destroy(&aspc->aspc_lock, &task_lck_grp); DBG("affinity_space_free(%p)\n", aspc); kfree(aspc, sizeof(struct affinity_space)); } @@ -528,7 +533,10 @@ affinity_set_place(affinity_space_t aspc, affinity_set_t new_aset) */ queue_iterate(&aspc->aspc_affinities, aset, affinity_set_t, aset_affinities) { - set_occupancy[aset->aset_num]++; + if(aset->aset_num < num_cpu_asets) + set_occupancy[aset->aset_num]++; + else + panic("aset_num = %d in %s\n", aset->aset_num, __FUNCTION__); } /*