Lines Matching +full:pc +full:- +full:bios
2 * QEMU PC System Firmware
4 * Copyright (c) 2003-2004 Fabrice Bellard
5 * Copyright (c) 2011-2012 Intel Corporation
28 #include "system/block-backend.h"
29 #include "qemu/error-report.h"
34 #include "hw/i386/pc.h"
36 #include "hw/qdev-properties.h"
53 /* map the last 128KB of the BIOS in ISA space */ in pc_isa_bios_init()
56 memory_region_init_ram_guest_memfd(isa_bios, NULL, "isa-bios", in pc_isa_bios_init()
59 memory_region_init_ram(isa_bios, NULL, "isa-bios", isa_bios_size, in pc_isa_bios_init()
63 0x100000 - isa_bios_size, in pc_isa_bios_init()
71 ((uint8_t*)flash_ptr) + (flash_size - isa_bios_size), in pc_isa_bios_init()
85 qdev_prop_set_uint64(dev, "sector-length", FLASH_SECTOR_SIZE); in pc_pflash_create()
103 if (pcmc->pci_enabled) { in pc_system_flash_create()
104 pcms->flash[0] = pc_pflash_create(pcms, "system.flash0", in pc_system_flash_create()
106 pcms->flash[1] = pc_pflash_create(pcms, "system.flash1", in pc_system_flash_create()
116 assert(PC_MACHINE_GET_CLASS(pcms)->pci_enabled); in pc_system_flash_cleanup_unused()
118 for (i = 0; i < ARRAY_SIZE(pcms->flash); i++) { in pc_system_flash_cleanup_unused()
119 if (!qdev_is_realized(DEVICE(pcms->flash[i]))) { in pc_system_flash_cleanup_unused()
123 object_unparent(OBJECT(pcms->flash[i])); in pc_system_flash_cleanup_unused()
124 pcms->flash[i] = NULL; in pc_system_flash_cleanup_unused()
130 * Map the pcms->flash[] from 4GiB downward, and realize.
131 * Map them in descending order, i.e. pcms->flash[0] at the top,
133 * Stop at the first pcms->flash[0] lacking a block backend.
135 * size isn't a non-zero multiple of 4KiB, or the total size exceeds
136 * pcms->max_fw_size.
138 * If pcms->flash[0] has a block backend, its memory is passed to
139 * pc_isa_bios_init(). Merging several flash devices for isa-bios is
156 assert(PC_MACHINE_GET_CLASS(pcms)->pci_enabled); in pc_system_flash_map()
158 for (i = 0; i < ARRAY_SIZE(pcms->flash); i++) { in pc_system_flash_map()
161 system_flash = pcms->flash[i]; in pc_system_flash_map()
169 blk_name(blk), strerror(-size)); in pc_system_flash_map()
176 info_report("its size must be a non-zero multiple of 0x%x", in pc_system_flash_map()
181 || total_size > HWADDR_MAX - size in pc_system_flash_map()
182 || total_size + size > pcms->max_fw_size) { in pc_system_flash_map()
185 pcms->max_fw_size); in pc_system_flash_map()
190 gpa = 0x100000000ULL - total_size; /* where the flash is mapped */ in pc_system_flash_map()
191 qdev_prop_set_uint32(DEVICE(system_flash), "num-blocks", in pc_system_flash_map()
198 if (pcmc->isa_bios_alias) { in pc_system_flash_map()
199 x86_isa_bios_init(&x86ms->isa_bios, rom_memory, flash_mem, in pc_system_flash_map()
202 pc_isa_bios_init(pcms, &x86ms->isa_bios, rom_memory, flash_mem); in pc_system_flash_map()
220 BlockBackend *pflash_blk[ARRAY_SIZE(pcms->flash)]; in pc_system_firmware_init()
222 if (!pcmc->pci_enabled) { in pc_system_firmware_init()
223 x86_bios_rom_init(X86_MACHINE(pcms), "bios.bin", rom_memory, true); in pc_system_firmware_init()
227 /* Map legacy -drive if=pflash to machine properties */ in pc_system_firmware_init()
228 for (i = 0; i < ARRAY_SIZE(pcms->flash); i++) { in pc_system_firmware_init()
229 pflash_cfi01_legacy_drive(pcms->flash[i], in pc_system_firmware_init()
231 pflash_blk[i] = pflash_cfi01_get_blk(pcms->flash[i]); in pc_system_firmware_init()
235 for (i = 1; i < ARRAY_SIZE(pcms->flash); i++) { in pc_system_firmware_init()
236 if (pflash_blk[i] && !pflash_blk[i - 1]) { in pc_system_firmware_init()
237 error_report("pflash%d requires pflash%d", i, i - 1); in pc_system_firmware_init()
244 x86_bios_rom_init(X86_MACHINE(pcms), "bios.bin", rom_memory, false); in pc_system_firmware_init()