setup.c: get ride of CPHYSADDR()
RFC 1/1 setup.c: get ride of CPHYSADDR()
Hi,
The following patch is an attempt to remove this macro in setup.c. I'm not sure about why sometimes it is used and sometimes it is not. By sending this RFC, I hope to get some feedbacks that will shed some light on this obscure macro...
The reason why I'm trying to kick out this macro is that we should rely on __pa() for address convertions instead of having several helpers that do the same thing but differently. Futermore if some tricks are needed for these conversions, they should be done in one place.
Thanks
Franck
-- >8 --
arch/mips/kernel/setup.c +3 -3
@@ -204,12 +204,12 @@ static void __init finalize_initrd(void)printk (KERN_INFO "Initrd not found or empty" ); goto disable; } -if (CPHYSADDR (initrd_end) >PFN_PHYS (max_low_pfn)) { +if (__pa (initrd_end) >PFN_PHYS (max_low_pfn)) {printk ("Initrd extends beyond end of memory" ); goto disable; } -reserve_bootmem (CPHYSADDR (initrd_start), size); +reserve_bootmem (__pa (initrd_start), size); initrd_below_start_ok =1 ; printk(KERN_INFO "Initial ramdisk at: 0x%lx (%lu bytes)\n",
@@ -256,7 +256,7 @@ static void __init bootmem_init(void)* of usable memory. */ reserved_end =init_initrd (); - reserved_end =PFN_UP (CPHYSADDR (max (reserved_end, (unsigned long )&_end))); + reserved_end =PFN_UP (__pa (max (reserved_end, (unsigned long )&_end)));/* * Find the highest page frame number we have available.
Franck,
Quoted 10 lines
The following patch is an attempt to remove this macro in
setup.c. I'm not sure about why sometimes it is used and sometimes it is not. By sending this RFC, I hope to get some feedbacks that will shed some light on this obscure macro...The reason why I'm trying to kick out this macro is that we should rely on
__pa()for address convertions instead of having several helpers that do the same thing but differently. Futermore if some tricks are needed for these conversions, they should be done in one place.
Have you verified it works correctly for 64-bit kernels linked at a KSEG0
address?
Maciej
Quoted 11 lines · Maciej W. Rozycki
Franck,
Quoted 6 lines
The reason why I'm trying to kick out this macro is that we should rely on
__pa()for address convertions instead of having several helpers that do the same thing but differently. Futermore if some tricks are needed for these conversions, they should be done in one place.Have you verified it works correctly for 64-bit kernels linked at a KSEG0
address?
Of course not ;). More seriously, I'm working on a 32 bits kernel. I'm not familiar with MIPS 64 bits world and all tricks needed to compile them, and that's the reason why I make this thread an RFC one.
I was suspecting something related to 64 bits kernels. Do you mean that this macro exists because of a linker issue ?
Futhermore I noticed that some part of the code in setup.c do no rely on this macro for address convertions. See for example in resource_init():
code_resource.start = virt_to_phys(&_text); code_resource.end = virt_to_phys(&_etext) - 1; data_resource.start = virt_to_phys(&_etext); data_resource.end = virt_to_phys(&_edata) - 1;
Why in that case we compute address converstion differently ?
Thanks
Franck