Files
xen/tools/firmware/hvmloader/config.h
T
Jan Beulich 1c4589280a hvmloader: tidy pci_mem_{start,end}
For one at least pci_mem_start has to be precisely 32 bits wide, so use
uint32_t for both. Otherwise expressions like "pci_mem_start <<= 1"
won't have the intended effect (in their context).

Further since its introduction pci_mem_end was never written to. Mark it
const to make this explicit.

Finally drop PCI_MEM_END: It is used just once and needlessly
disconnected from the other constant (RESERVED_MEMBASE) it needs to
match. Use RESERVED_MEMBASE as initializer of pci_mem_end instead.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
2021-12-17 08:56:34 +01:00

101 lines
2.8 KiB
C

#ifndef __HVMLOADER_CONFIG_H__
#define __HVMLOADER_CONFIG_H__
#include <stdint.h>
#include <stdbool.h>
enum virtual_vga { VGA_none, VGA_std, VGA_cirrus, VGA_pt };
extern enum virtual_vga virtual_vga;
extern unsigned long igd_opregion_pgbase;
#define IGD_OPREGION_PAGES 3
struct bios_config {
const char *name;
/* BIOS ROM image bits */
void *image;
unsigned int image_size;
/* Physical address to load at */
unsigned int bios_address;
/* ROMS */
void (*load_roms)(void);
void (*bios_load)(const struct bios_config *config, void *addr,
uint32_t size, void *extra_addr);
void (*bios_info_setup)(void);
void (*bios_info_finish)(void);
void (*e820_setup)(void);
void (*acpi_build_tables)(void);
void (*create_mp_tables)(void);
void (*create_smbios_tables)(void);
void (*create_pir_tables)(void);
};
extern struct bios_config rombios_config;
extern struct bios_config seabios_config;
extern struct bios_config ovmf_config;
#define PAGE_SHIFT 12
#define PAGE_SIZE (1ul << PAGE_SHIFT)
extern uint32_t ioapic_base_address;
extern uint8_t ioapic_version;
#define IOAPIC_ID 0x01
#define LAPIC_BASE_ADDRESS 0xfee00000
#define LAPIC_ID(vcpu_id) ((vcpu_id) * 2)
#define PCI_ISA_DEVFN 0x08 /* dev 1, fn 0 */
#define PCI_ISA_IRQ_MASK 0x0c20U /* ISA IRQs 5,10,11 are PCI connected */
#define ACPI_TIS_HDR_ADDRESS 0xFED40F00UL
extern uint32_t pci_mem_start;
extern const uint32_t pci_mem_end;
extern uint64_t pci_hi_mem_start, pci_hi_mem_end;
extern bool acpi_enabled;
/* Memory map. */
#define SCRATCH_PHYSICAL_ADDRESS 0x00010000
#define HYPERCALL_PHYSICAL_ADDRESS 0x00080000
#define VGABIOS_PHYSICAL_ADDRESS 0x000C0000
#define HVMLOADER_PHYSICAL_ADDRESS 0x00100000
/* Special BIOS mappings, etc. are allocated from here upwards... */
#define RESERVED_MEMBASE 0xFC000000
/* NB. ACPI_INFO_PHYSICAL_ADDRESS *MUST* match definition in acpi/dsdt.asl! */
#define ACPI_INFO_PHYSICAL_ADDRESS 0xFC000000
#define ACPI_MEMORY_DYNAMIC_START 0xFC001000
#define RESERVED_MEMORY_DYNAMIC_START 0xFC100000
#define RESERVED_MEMORY_DYNAMIC_END 0xFE000000
/*
* GUEST_RESERVED: Physical address space reserved for guest use.
* This is not dynamically advertised to guests, so this range must *never*
* be used for any purpose by us, in future. It must always be marked as
* reserved in the memory map (e.g., E820_RESERVED) so that mechanisms such
* as PCI BAR remapping do not allocate from this region.
*/
#define GUEST_RESERVED_START 0xFE700000
#define GUEST_RESERVED_END 0xFE800000
extern unsigned long scratch_start;
#endif /* __HVMLOADER_CONFIG_H__ */
/*
* Local variables:
* mode: C
* c-file-style: "BSD"
* c-basic-offset: 4
* tab-width: 4
* indent-tabs-mode: nil
* End:
*/