qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 15/16] boot-order-test: Support fw_cfg in I/O


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH v3 15/16] boot-order-test: Support fw_cfg in I/O space
Date: Fri, 14 Jun 2013 08:53:50 -0500
User-agent: Notmuch/0.15.2+77~g661dcf8 (http://notmuchmail.org) Emacs/23.3.1 (x86_64-pc-linux-gnu)

Markus Armbruster <address@hidden> writes:

> Next commit needs it.
>
> Cc: Blue Swirl <address@hidden>
> Signed-off-by: Markus Armbruster <address@hidden>
> ---
>  tests/boot-order-test.c | 24 ++++++++++++++++--------
>  1 file changed, 16 insertions(+), 8 deletions(-)
>
> diff --git a/tests/boot-order-test.c b/tests/boot-order-test.c
> index 7b1edc1..d1d99f8 100644
> --- a/tests/boot-order-test.c
> +++ b/tests/boot-order-test.c
> @@ -133,23 +133,31 @@ static void test_prep_boot_order(void)
>      test_boot_orders("prep", read_boot_order_prep, test_cases_prep);
>  }
>  
> -static void read_fw_cfg(uint64_t cfg_addr, uint16_t cmd,
> +static void read_fw_cfg(uint64_t cfg_addr, bool addr_is_io, uint16_t cmd,
>                          void *buf, size_t len)

I missed it earlier, but you can use libqos/fw_cfg.h for this.

Regards,

Anthony Liguori

>  {
>      uint8_t *p = buf;
>      size_t i;
>  
> -    writew(cfg_addr, cmd);
> -    for (i = 0; i < len; i++) {
> -        p[i] = readb(cfg_addr + 2);
> +    if (addr_is_io) {
> +        outw(cfg_addr, cmd);
> +        for (i = 0; i < len; i++) {
> +            p[i] = inb(cfg_addr + 1);
> +        }
> +    } else {
> +        writew(cfg_addr, cmd);
> +        for (i = 0; i < len; i++) {
> +            p[i] = readb(cfg_addr + 2);
> +        }
>      }
>  }
>  
> -static uint16_t read_fw_cfg_i16(uint64_t cfg_addr, uint16_t cmd)
> +static uint16_t read_fw_cfg_i16(uint64_t cfg_addr, bool addr_is_io,
> +                                    uint16_t cmd)
>  {
>      uint16_t value;
>  
> -    read_fw_cfg(cfg_addr, cmd, &value, sizeof(value));
> +    read_fw_cfg(cfg_addr, addr_is_io, cmd, &value, sizeof(value));
>      return le16_to_cpu(value);
>  }
>  
> @@ -157,7 +165,7 @@ static uint16_t read_fw_cfg_i16(uint64_t cfg_addr, 
> uint16_t cmd)
>  
>  static uint64_t read_boot_order_pmac(void)
>  {
> -    return read_fw_cfg_i16(PMAC_CFG_ADDR, FW_CFG_BOOT_DEVICE);
> +    return read_fw_cfg_i16(PMAC_CFG_ADDR, false, FW_CFG_BOOT_DEVICE);
>  }
>  
>  static const boot_order_test test_cases_fw_cfg[] = {
> @@ -182,7 +190,7 @@ static void test_pmac_newworld_boot_order(void)
>  
>  static uint64_t read_boot_order_sun4m(void)
>  {
> -    return read_fw_cfg_i16(SUN4M_CFG_ADDR, FW_CFG_BOOT_DEVICE);
> +    return read_fw_cfg_i16(SUN4M_CFG_ADDR, false, FW_CFG_BOOT_DEVICE);
>  }
>  
>  static void test_sun4m_boot_order(void)
> -- 
> 1.7.11.7




reply via email to

[Prev in Thread] Current Thread [Next in Thread]