]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
x86: Return mtrr_add_request() to its old purpose
authorSimon Glass <sjg@chromium.org>
Mon, 31 Jul 2023 06:01:08 +0000 (14:01 +0800)
committerBin Meng <bmeng.cn@gmail.com>
Tue, 1 Aug 2023 02:06:46 +0000 (10:06 +0800)
This function used to be for adding a list of requests to be actioned on
relocation. Revert it back to this purpose, to avoid problems with boards
which need control of their MTRRs (i.e. those which don't use FSP).

The mtrr_set_next_var() function is available when the next free
variable-MTRR must be set, so this can be used instead.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Fixes: 3bcd6cf89ef ("x86: mtrr: Skip MSRs that were already programmed..")
Fixes: 596bd0589ad ("x86: mtrr: Do not clear the unused ones..")
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
arch/x86/cpu/mtrr.c

index d57fcface0123ced9d71469a35cc4f1bd714e2e6..9c24ae984e907340dde770cd819128e91aff46aa 100644 (file)
@@ -166,8 +166,12 @@ int mtrr_commit(bool do_caches)
        debug("open done\n");
        qsort(req, gd->arch.mtrr_req_count, sizeof(*req), h_comp_mtrr);
        for (i = 0; i < gd->arch.mtrr_req_count; i++, req++)
-               mtrr_set_next_var(req->type, req->start, req->size);
+               set_var_mtrr(i, req->type, req->start, req->size);
 
+       /* Clear the ones that are unused */
+       debug("clear\n");
+       for (; i < mtrr_get_var_count(); i++)
+               wrmsrl(MTRR_PHYS_MASK_MSR(i), 0);
        debug("close\n");
        mtrr_close(&state, do_caches);
        debug("mtrr done\n");