Hi Chun-yi, On Tue, 2015-08-11 at 14:16 +0800, Lee, Chun-Yi wrote: > +/* A page used to keep hibernation keys */ > +static struct hibernation_keys *hibernation_keys; > + > +void __init parse_hibernation_keys(u64 phys_addr, u32 data_len) > +{ > + struct setup_data *hibernation_setup_data; > + > + /* Reserve keys memory, will copy and erase in init_hibernation_keys() */ > + keys_phys_addr = phys_addr + sizeof(struct setup_data); > + memblock_reserve(keys_phys_addr, sizeof(struct hibernation_keys)); > + > + /* clear hibernation_data */ > + hibernation_setup_data = early_memremap(phys_addr, data_len); > + if (!hibernation_setup_data) > + return; > + should we invoke memblock_free if early_memremap failed? Best Regards, Yu ��.n��������+%������w��{.n�����{����*jg��������ݢj����G�������j:+v���w�m������w�������h�����٥