hv:Replace dynamic memory with static for pcpu

--remove 'calloc' for pcpu, change it to static array
--rename 'init_percpu_data_area' to 'init_percpu_lapic_id'
Tracked-On: #861
Signed-off-by: Mingqiang Chi <mingqiang.chi@intel.com>
Reviewed-by: Li, Fei1 <fei1.li@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Mingqiang Chi 2018-10-24 13:36:02 +08:00 committed by Xie, Nanlin
parent 4afb6666b9
commit dff441a0d5
2 changed files with 6 additions and 14 deletions

View File

@ -19,7 +19,7 @@ static spinlock_t up_count_spinlock = {
.tail = 0U .tail = 0U
}; };
struct per_cpu_region *per_cpu_data_base_ptr; struct per_cpu_region per_cpu_data[CONFIG_MAX_PCPU_NUM] __aligned(CPU_PAGE_SIZE);
uint16_t phys_cpu_num = 0U; uint16_t phys_cpu_num = 0U;
static uint64_t pcpu_sync = 0UL; static uint64_t pcpu_sync = 0UL;
static volatile uint16_t up_count = 0U; static volatile uint16_t up_count = 0U;
@ -273,14 +273,6 @@ static int hardware_detect_support(void)
return 0; return 0;
} }
static void alloc_phy_cpu_data(uint16_t pcpu_num)
{
phys_cpu_num = pcpu_num;
per_cpu_data_base_ptr = calloc(pcpu_num, sizeof(struct per_cpu_region));
ASSERT(per_cpu_data_base_ptr != NULL, "");
}
uint16_t __attribute__((weak)) parse_madt(uint32_t lapic_id_array[CONFIG_MAX_PCPU_NUM]) uint16_t __attribute__((weak)) parse_madt(uint32_t lapic_id_array[CONFIG_MAX_PCPU_NUM])
{ {
static const uint32_t lapic_id[] = {0U, 2U, 4U, 6U}; static const uint32_t lapic_id[] = {0U, 2U, 4U, 6U};
@ -293,7 +285,7 @@ uint16_t __attribute__((weak)) parse_madt(uint32_t lapic_id_array[CONFIG_MAX_PCP
return ((uint16_t)ARRAY_SIZE(lapic_id)); return ((uint16_t)ARRAY_SIZE(lapic_id));
} }
static void init_percpu_data_area(void) static void init_percpu_lapic_id(void)
{ {
uint16_t i; uint16_t i;
uint16_t pcpu_num = 0U; uint16_t pcpu_num = 0U;
@ -306,7 +298,7 @@ static void init_percpu_data_area(void)
ASSERT(false); ASSERT(false);
} }
alloc_phy_cpu_data(pcpu_num); phys_cpu_num = pcpu_num;
for (i = 0U; (i < pcpu_num) && (i < CONFIG_MAX_PCPU_NUM); i++) { for (i = 0U; (i < pcpu_num) && (i < CONFIG_MAX_PCPU_NUM); i++) {
per_cpu(lapic_id, i) = lapic_id_array[i]; per_cpu(lapic_id, i) = lapic_id_array[i];
@ -414,7 +406,7 @@ void bsp_boot_init(void)
early_init_lapic(); early_init_lapic();
init_percpu_data_area(); init_percpu_lapic_id();
load_gdtr_and_tr(); load_gdtr_and_tr();

View File

@ -56,14 +56,14 @@ struct per_cpu_region {
#endif #endif
} __aligned(CPU_PAGE_SIZE); /* per_cpu_region size aligned with CPU_PAGE_SIZE */ } __aligned(CPU_PAGE_SIZE); /* per_cpu_region size aligned with CPU_PAGE_SIZE */
extern struct per_cpu_region *per_cpu_data_base_ptr; extern struct per_cpu_region per_cpu_data[];
extern uint16_t phys_cpu_num; extern uint16_t phys_cpu_num;
extern uint64_t pcpu_active_bitmap; extern uint64_t pcpu_active_bitmap;
/* /*
* get percpu data for pcpu_id. * get percpu data for pcpu_id.
*/ */
#define per_cpu(name, pcpu_id) \ #define per_cpu(name, pcpu_id) \
(per_cpu_data_base_ptr[(pcpu_id)].name) (per_cpu_data[(pcpu_id)].name)
/* get percpu data for current pcpu */ /* get percpu data for current pcpu */
#define get_cpu_var(name) per_cpu(name, get_cpu_id()) #define get_cpu_var(name) per_cpu(name, get_cpu_id())