ACK: [PATCH v3 3/6] Add mechanism to tell FWTS what architecture is being tested
Alex Hung
alex.hung at canonical.com
Wed Jan 20 03:21:27 UTC 2016
On 2016-01-19 08:26 AM, Al Stone wrote:
> In some cases, we will want to run FWTS on one architecture, but use it
> test firmware tables that may be for another architecture. For example,
> we may want to test ACPI tables for arm64 machines on an x86 laptop.
>
> Previous patches provided the fwts_architecture as a typedef, along with
> some helper functions. Here, we add in framework variables for the host
> (the machine running FWTS) and the target (the arch of the tables being
> tested) and then initialize them properly.
>
> Further, we add the --arch=<name> parameter so that the user can specify
> the target architecture. By default, the target will be assumed to be
> the same as the host.
>
> Signed-off-by: Al Stone <al.stone at linaro.org>
> ---
> src/lib/include/fwts_framework.h | 3 +++
> src/lib/src/fwts_framework.c | 25 +++++++++++++++++++++++++
> 2 files changed, 28 insertions(+)
>
> diff --git a/src/lib/include/fwts_framework.h b/src/lib/include/fwts_framework.h
> index a35ed19..c9ea4bb 100644
> --- a/src/lib/include/fwts_framework.h
> +++ b/src/lib/include/fwts_framework.h
> @@ -26,6 +26,7 @@
>
> typedef struct fwts_framework fwts_framework;
>
> +#include "fwts_arch.h"
> #include "fwts_log.h"
> #include "fwts_list.h"
> #include "fwts_acpica_mode.h"
> @@ -148,6 +149,8 @@ typedef struct fwts_framework {
> fwts_acpica_mode acpica_mode; /* ACPICA mode flags */
> void *rsdp; /* ACPI RSDP address */
> fwts_pm_method pm_method;
> + fwts_architecture host_arch; /* arch FWTS was built for */
> + fwts_architecture target_arch; /* arch being tested */
> } fwts_framework;
>
> typedef struct {
> diff --git a/src/lib/src/fwts_framework.c b/src/lib/src/fwts_framework.c
> index fec444f..e3f03f6 100644
> --- a/src/lib/src/fwts_framework.c
> +++ b/src/lib/src/fwts_framework.c
> @@ -127,6 +127,7 @@ static fwts_option fwts_framework_options[] = {
> { "acpitests", "", 0, "Run general ACPI tests." },
> { "acpicompliance", "", 0, "Run ACPI tests for spec compliance." },
> { "log-level", "", 1, "Specify error level to report failed test messages," },
> + { "arch", "", 1, "Specify arch of the tables being tested (defaults to current host)." },
> { NULL, NULL, 0, NULL }
> };
>
> @@ -1127,6 +1128,22 @@ static int fwts_framework_ll_parse(fwts_framework *fw, const char *arg)
> return FWTS_ERROR;
> }
>
> +/*
> + * fwts_framework_an_parse()
> + * parse arch (architecture) name option
> + */
> +static int fwts_framework_an_parse(fwts_framework *fw, const char *arg)
> +{
> + fw->target_arch = fwts_arch_get_arch(arg);
> + if (fw->target_arch == FWTS_ARCH_OTHER) {
> + fprintf(stderr, "--arch can be one of: %s\n",
> + fwts_arch_names());
> + return FWTS_ERROR;
> + }
> +
> + return FWTS_OK;
> +}
> +
> int fwts_framework_options_handler(fwts_framework *fw, int argc, char * const argv[], int option_char, int long_index)
> {
> FWTS_UNUSED(argc);
> @@ -1280,6 +1297,10 @@ int fwts_framework_options_handler(fwts_framework *fw, int argc, char * const ar
> if (fwts_framework_ll_parse(fw, optarg) != FWTS_OK)
> return FWTS_ERROR;
> break;
> + case 43: /* --arch */
> + if (fwts_framework_an_parse(fw, optarg) != FWTS_OK)
> + return FWTS_ERROR;
> + break;
> }
> break;
> case 'a': /* --all */
> @@ -1381,6 +1402,10 @@ int fwts_framework_args(const int argc, char **argv)
> /* Set the power method to FWTS_PM_UNDEFINED before we parse arguments */
> fw->pm_method = FWTS_PM_UNDEFINED;
>
> + /* Set host/target test architecture defaults */
> + fw->host_arch = fwts_arch_get_host();
> + fw->target_arch = fw->host_arch;
> +
> ret = fwts_args_add_options(fwts_framework_options,
> fwts_framework_options_handler, NULL);
> if (ret == FWTS_ERROR)
>
Acked-by: Alex Hung <alex.hung at canonical.com>
More information about the fwts-devel
mailing list