aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2016-09-06 14:44:22 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2016-09-06 15:57:15 +0200
commit96dbb2c0a24fdc6bbe4d8d834f0b879e01fdcae3 (patch)
tree47fc15d16e1467dc2ebde10aa1a1a174cea90d42
parent751e77e06ec147046b4eae76777dc2e22774aee0 (diff)
downloadqboot-96dbb2c0a24fdc6bbe4d8d834f0b879e01fdcae3.zip
qboot-96dbb2c0a24fdc6bbe4d8d834f0b879e01fdcae3.tar.gz
qboot-96dbb2c0a24fdc6bbe4d8d834f0b879e01fdcae3.tar.bz2
use fw_cfg_read_entry
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--fw_cfg.c14
-rw-r--r--include/fw_cfg.h9
-rw-r--r--main.c3
-rw-r--r--tables.c6
4 files changed, 16 insertions, 16 deletions
diff --git a/fw_cfg.c b/fw_cfg.c
index f8aea5a..85a2639 100644
--- a/fw_cfg.c
+++ b/fw_cfg.c
@@ -73,8 +73,7 @@ static void boot_multiboot_from_fw_cfg(void)
fw_cfg_select(FW_CFG_KERNEL_ADDR);
kernel_addr = (void *) fw_cfg_readl_le();
- fw_cfg_select(FW_CFG_KERNEL_DATA);
- fw_cfg_read(kernel_addr, sz);
+ fw_cfg_read_entry(FW_CFG_KERNEL_DATA, kernel_addr, sz);
fw_cfg_select(FW_CFG_INITRD_SIZE);
sz = fw_cfg_readl_le();
@@ -83,8 +82,7 @@ static void boot_multiboot_from_fw_cfg(void)
fw_cfg_select(FW_CFG_INITRD_ADDR);
mb = (struct mb_info *) fw_cfg_readl_le();
- fw_cfg_select(FW_CFG_INITRD_DATA);
- fw_cfg_read(mb, sz);
+ fw_cfg_read_entry(FW_CFG_INITRD_DATA, mb, sz);
mb->mem_lower = 639;
mb->mem_upper = (lowmem - 1048576) >> 10;
@@ -145,14 +143,12 @@ void boot_from_fwcfg(void)
args.setup_size - sizeof(args.header));
fw_cfg_select(FW_CFG_KERNEL_DATA);
- fw_cfg_read(args.kernel_addr, kernel_size);
+ fw_cfg_read_entry(FW_CFG_KERNEL_DATA, args.kernel_addr, kernel_size);
- fw_cfg_select(FW_CFG_CMDLINE_DATA);
- fw_cfg_read(args.cmdline_addr, args.cmdline_size);
+ fw_cfg_read_entry(FW_CFG_CMDLINE_DATA, args.cmdline_addr, args.cmdline_size);
if (args.initrd_size) {
- fw_cfg_select(FW_CFG_INITRD_DATA);
- fw_cfg_read(args.initrd_addr, args.initrd_size);
+ fw_cfg_read_entry(FW_CFG_INITRD_DATA, args.initrd_addr, args.initrd_size);
}
boot_bzimage(&args);
diff --git a/include/fw_cfg.h b/include/fw_cfg.h
index 48234f5..46fa869 100644
--- a/include/fw_cfg.h
+++ b/include/fw_cfg.h
@@ -103,7 +103,7 @@ static inline void fw_cfg_skip(int len)
}
static inline void
-fw_cfg_read_entry(void *buf, int e, int len)
+fw_cfg_read_entry(int e, void *buf, int len)
{
fw_cfg_select(e);
fw_cfg_read(buf, len);
@@ -114,4 +114,11 @@ int fw_cfg_file_id(char *name);
uint32_t fw_cfg_file_size(int id);
void fw_cfg_file_select(int id);
+static inline void
+fw_cfg_read_file(int id, void *buf, int len)
+{
+ fw_cfg_file_select(id);
+ fw_cfg_read(buf, len);
+}
+
#endif
diff --git a/main.c b/main.c
index b376c0d..1913b37 100644
--- a/main.c
+++ b/main.c
@@ -43,7 +43,6 @@ static void extract_e820(void)
size = fw_cfg_file_size(id);
nr_map = size / sizeof(e820->map[0]) + 4;
- fw_cfg_file_select(id);
e820 = malloc(offsetof(struct e820map, map[nr_map]));
e820->nr_map = nr_map;
@@ -55,7 +54,7 @@ static void extract_e820(void)
{ .addr = 0xd0000, .size = 128 * 1024, .type = E820_NVS }; /* ACPI tables */
e820->map[3] = (struct e820entry)
{ .addr = 0xf0000, .size = 64 * 1024, .type = E820_RESERVED }; /* firmware */
- fw_cfg_read(&e820->map[4], size);
+ fw_cfg_read_file(id, &e820->map[4], size);
for (i = 4; i < e820->nr_map; i++)
if (e820->map[i].addr == 0) {
lowmem = e820->map[i].size;
diff --git a/tables.c b/tables.c
index 3f59b3e..bb533b6 100644
--- a/tables.c
+++ b/tables.c
@@ -68,8 +68,7 @@ static void do_alloc(char *file, uint32_t align, uint8_t zone)
p = (char *)((uintptr_t)(p + align - 1) & -align);
set_file_addr(id, p);
- fw_cfg_file_select(id);
- fw_cfg_read(p, n);
+ fw_cfg_read_file(id, p, n);
}
static void do_ptr(char *dest, char *src, uint32_t offset, uint8_t size)
@@ -135,8 +134,7 @@ void extract_acpi(void)
if (!n)
return;
- fw_cfg_file_select(id);
- fw_cfg_read(script, n);
+ fw_cfg_read_file(id, script, n);
for (i = 0; i < ARRAY_SIZE(script); i++) {
struct loader_cmd *s = &script[i];