[PATCH] bios: mtrr: remove unused VGA region check

IvanHu ivan.hu at canonical.com
Thu Dec 13 09:42:58 UTC 2012


On 12/07/2012 08:09 AM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> We've had the VGA region check disabled for a few releases now
> and I really don't think it will ever be enabled, so I'm removing
> this old unused code.
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
>   src/bios/mtrr/mtrr.c | 148 ---------------------------------------------------
>   1 file changed, 148 deletions(-)
>
> diff --git a/src/bios/mtrr/mtrr.c b/src/bios/mtrr/mtrr.c
> index 5f3e8d5..294e80b 100644
> --- a/src/bios/mtrr/mtrr.c
> +++ b/src/bios/mtrr/mtrr.c
> @@ -23,8 +23,6 @@
>
>   #ifdef FWTS_ARCH_INTEL
>
> -#define FWTS_TEST_VGA_REGION	0
> -
>   #include <stdlib.h>
>   #include <stdio.h>
>   #include <string.h>
> @@ -194,152 +192,6 @@ restart:
>   	return type;
>   }
>
> -#if FWTS_TEST_VGA_REGION
> -static fwts_list *get_klog_bios_mtrr(void)
> -{
> -	fwts_list *mtrr_bios_list;
> -	fwts_list_link *item;
> -	int scan = 0;
> -
> -	if ((mtrr_bios_list = fwts_list_new()) == NULL)
> -		return NULL;
> -
> -	fwts_list_foreach(item, klog) {
> -		char *str = fwts_text_list_text(item);
> -
> -		if (strstr(str, "MTRR variable ranges enabled")) {
> -			scan = 1;
> -			continue;
> -		}
> -
> -		if (scan) {
> -			char *base = strstr(str, "base");
> -			char *disabled = strstr(str, "disabled");
> -
> -			if ((base == NULL) && (disabled == NULL))
> -				scan = 0;
> -
> -			if (base) {
> -				uint64_t start = strtoull(base+6, NULL, 16);
> -				str = strstr(base, "mask");
> -				if (str) {
> -					struct mtrr_entry *mtrr;
> -
> -					mtrr = calloc(1, sizeof(struct mtrr_entry));
> -					if (mtrr == NULL) {
> -						fwts_list_free(mtrr_bios_list,
> -							free);
> -						return NULL;
> -					}
> -					mtrr->type = 0;
> -
> -					uint64_t mask =
> -						strtoull(str+5, NULL, 16);
> -					uint64_t pat = 0x8000000000000000ULL;
> -					while ((mask & pat) == 0) {
> -						mask |= pat;
> -						pat >>= 1;
> -					}
> -
> -					mtrr->start = start;
> -					mtrr->end = start + ~mask;
> -
> -					fwts_list_append(mtrr_bios_list, mtrr);
> -				}
> -			}
> -		}
> -	}
> -
> -	return mtrr_bios_list;
> -}
> -#endif
> -
> -#if FWTS_TEST_VGA_REGION
> -static int check_vga_controller_address(fwts_framework *fw)
> -{
> -	char line[4096];
> -	fwts_list *lspci_output;
> -	fwts_list_link *item;
> -	fwts_list *mtrr_bios_list;
> -	int vga = 0;
> -	int found = 0;
> -
> -	memset(line,0,4096);
> -
> -	if ((mtrr_bios_list = get_klog_bios_mtrr()) == NULL) {
> -		fwts_log_error("Out of memory fetching MTRR list.");
> -		return FWTS_ERROR;
> -	}
> -
> -	snprintf(line, sizeof(line), "%s -v", fw->lspci);
> -	fwts_pipe_exec(line, &lspci_output);
> -	if (lspci_output == NULL)
> -		return FWTS_ERROR;
> -
> -	fwts_list_foreach(item, lspci_output) {
> -		char *str = fwts_text_list_text(item);
> -		if (strstr(str, "VGA compatible controller"))
> -			vga = 1;
> -		if (*str == '\0')
> -			vga = 0;
> -		if (vga) {
> -			if ((str = strstr(str, "Memory at ")) != NULL) {
> -				struct mtrr_entry *mtrr;
> -				uint64_t start = strtoull(str+10, NULL, 16);
> -				uint64_t size = 0;
> -#if 0
> -				int pref = 0;
> -				if (strstr(str, "non-prefetchable"))
> -					pref = 0;
> -				else if (strstr(str, "(prefetchable"))
> -					pref = 1;
> -				else if (strstr(str, ", prefetchable"))
> -					pref = 1;
> -#endif
> -				if ((str = strstr(str + 10, "size=")) != NULL) {
> -					size = strtoull(str+5, NULL, 10);
> -					if (strstr(str + 5, "K]"))
> -						size *= 1024;
> -					if (strstr(str + 5, "M]"))
> -						size *= (1024*1024);
> -					size--;
> -				}
> -
> -				if (size > 1024*1024) {
> -					fwts_list_link *mtrr_bios_item;
> -
> -					fwts_list_foreach(mtrr_bios_item, mtrr_bios_list) {
> -						mtrr = fwts_list_data(struct mtrr_entry *, mtrr_bios_item);
> -						if (start >= mtrr->start && (start+size)<= mtrr->end) {
> -							found = 1;
> -							fwts_passed(fw, "Found VGA memory region in BIOS initialised MTRR space: %" PRIx64 " - %" PRIx64 "\n",
> -								mtrr->start,
> -								mtrr->end);
> -							break;
> -						}
> -					}
> -				}
> -			}
> -		}
> -	}
> -
> -	if (!found) {
> -		fwts_failed(fw, LOG_LEVEL_LOW, "MTRRVGA", "Did not find a BIOS configured MTRR for VGA memory region. ");
> -		fwts_advice(fw,
> -			"The VGA memory region does not have a MTRR configured "
> -			"by the BIOS. This means that bootloaders rendering to "
> -			"a framebuffer will be rendering slowly and this will "
> -			"slow the boot speed. It is probably worth asking the "
> -			"BIOS vendor to map in the VGA write-combining "
> -			"region.");
> -	}
> -	fwts_list_free(mtrr_bios_list, free);
> -	fwts_list_free(lspci_output, free);
> -
> -	return FWTS_OK;
> -}
> -#endif
> -
>   static int is_prefetchable(fwts_framework *fw, char *device, uint64_t address)
>   {
>   	int pref = 0;
>
Acked-by: Ivan Hu <ivan.hu at canonical.com>



More information about the fwts-devel mailing list