@@ -82,7 +82,7 @@ void adjust_memory_map(void)
/* Modify the existing highmem region if it exists. */
if ( memory_map.map[i].type == E820_RAM &&
- high_mem_end && map_start == ((uint64_t)1 << 32) )
+ high_mem_end && map_start == (uint64_t)GB(4) )
{
if ( high_mem_end != map_end )
memory_map.map[i].size = high_mem_end - map_start;
@@ -94,7 +94,7 @@ void adjust_memory_map(void)
/* If there was no highmem region, just create one. */
if ( high_mem_end )
{
- memory_map.map[i].addr = ((uint64_t)1 << 32);
+ memory_map.map[i].addr = (uint64_t)GB(4);
memory_map.map[i].size =
((uint64_t)hvm_info->high_mem_pgend << PAGE_SHIFT) -
memory_map.map[i].addr;
@@ -234,7 +234,7 @@ int build_e820_table(struct e820entry *e820,
}
/* Low RAM goes here. Reserve space for special pages. */
- BUG_ON(low_mem_end < (2u << 20));
+ BUG_ON(low_mem_end < MB(2));
/*
* Construct E820 table according to recorded memory map.
@@ -59,7 +59,7 @@ static int find_next_rmrr(uint32_t base)
{
unsigned int i;
int next_rmrr = -1;
- uint64_t end, min_end = 1ULL << 32;
+ uint64_t end, min_end = GB(4);
for ( i = 0; i < memory_map.nr_map ; i++ )
{
@@ -298,7 +298,7 @@ void pci_setup(void)
if ( mmio_hole_size )
{
- uint64_t max_ram_below_4g = (1ULL << 32) - mmio_hole_size;
+ uint64_t max_ram_below_4g = GB(4) - mmio_hole_size;
if ( max_ram_below_4g > HVM_BELOW_4G_MMIO_START )
{
@@ -386,13 +386,13 @@ void pci_setup(void)
adjust_memory_map();
high_mem_resource.base = ((uint64_t)hvm_info->high_mem_pgend) << PAGE_SHIFT;
- if ( high_mem_resource.base < 1ull << 32 )
+ if ( high_mem_resource.base < GB(4) )
{
if ( hvm_info->high_mem_pgend != 0 )
printf("WARNING: hvm_info->high_mem_pgend %x"
" does not point into high memory!",
hvm_info->high_mem_pgend);
- high_mem_resource.base = 1ull << 32;
+ high_mem_resource.base = GB(4);
}
printf("%sRAM in high memory; setting high_mem resource base to "PRIllx"\n",
hvm_info->high_mem_pgend?"":"No ",
@@ -239,15 +239,14 @@ get_memsize(void)
sz = (uint64_t)hvm_info->low_mem_pgend << PAGE_SHIFT;
if ( hvm_info->high_mem_pgend )
- sz += (((uint64_t)hvm_info->high_mem_pgend << PAGE_SHIFT)
- - (1ull << 32));
+ sz += (((uint64_t)hvm_info->high_mem_pgend << PAGE_SHIFT) - GB(4));
/*
* Round up to the nearest MB. The user specifies domU pseudo-physical
* memory in megabytes, so not doing this could easily lead to reporting
* one less MB than the user specified.
*/
- return (sz + (1ul << 20) - 1) >> 20;
+ return (sz + MB(1) - 1) >> 20;
}
void
@@ -48,6 +48,9 @@ void __bug(char *file, int line) __attribute__((noreturn));
#define max_t(type,x,y) \
({ type __x = (x); type __y = (y); __x > __y ? __x: __y; })
+#define MB(_mb) (_mb##ULL << 20)
+#define GB(_gb) (_gb##ULL << 30)
+
static inline int test_bit(unsigned int b, const void *p)
{
return !!(((const uint8_t *)p)[b>>3] & (1u<<(b&7)));
instead of hardcoding values. Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> --- Cc: Jan Beulich <jbeulich@suse.com> Cc: Andrew Cooper <andrew.cooper3@citrix.com> Cc: Ian Jackson <ian.jackson@eu.citrix.com> Cc: Wei Liu <wei.liu2@citrix.com> v2: New submission --- tools/firmware/hvmloader/e820.c | 6 +++--- tools/firmware/hvmloader/pci.c | 8 ++++---- tools/firmware/hvmloader/smbios.c | 5 ++--- tools/firmware/hvmloader/util.h | 3 +++ 4 files changed, 12 insertions(+), 10 deletions(-)