diff mbox series

[v3,05/13] mac_{old|new}world: Simplify cmdline_base calculation

Message ID 2514e45b2ac438e40180cdf51e156a9dcf6a4df4.1664827008.git.balaton@eik.bme.hu (mailing list archive)
State New, archived
Headers show
Series Misc ppc/mac machines clean up | expand

Commit Message

BALATON Zoltan Oct. 3, 2022, 8:13 p.m. UTC
By slight reorganisation we can avoid an else branch and some code
duplication which makes it easier to follow the code.

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
---
 hw/ppc/mac_newworld.c | 6 +++---
 hw/ppc/mac_oldworld.c | 7 +++----
 2 files changed, 6 insertions(+), 7 deletions(-)

Comments

Mark Cave-Ayland Oct. 14, 2022, 8:57 a.m. UTC | #1
On 03/10/2022 21:13, BALATON Zoltan wrote:

> By slight reorganisation we can avoid an else branch and some code
> duplication which makes it easier to follow the code.
> 
> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> ---
>   hw/ppc/mac_newworld.c | 6 +++---
>   hw/ppc/mac_oldworld.c | 7 +++----
>   2 files changed, 6 insertions(+), 7 deletions(-)
> 
> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
> index 6bc3bd19be..73b01e8c6d 100644
> --- a/hw/ppc/mac_newworld.c
> +++ b/hw/ppc/mac_newworld.c
> @@ -194,9 +194,11 @@ static void ppc_core99_init(MachineState *machine)
>                            machine->kernel_filename);
>               exit(1);
>           }
> +        cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
> +                                         KERNEL_GAP);
>           /* load initrd */
>           if (machine->initrd_filename) {
> -            initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + KERNEL_GAP);
> +            initrd_base = cmdline_base;
>               initrd_size = load_image_targphys(machine->initrd_filename,
>                                                 initrd_base,
>                                                 machine->ram_size - initrd_base);
> @@ -206,8 +208,6 @@ static void ppc_core99_init(MachineState *machine)
>                   exit(1);
>               }
>               cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size);
> -        } else {
> -            cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + KERNEL_GAP);
>           }
>           ppc_boot_device = 'm';
>       } else {
> diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
> index cb67e44081..b424729a39 100644
> --- a/hw/ppc/mac_oldworld.c
> +++ b/hw/ppc/mac_oldworld.c
> @@ -168,10 +168,11 @@ static void ppc_heathrow_init(MachineState *machine)
>                            machine->kernel_filename);
>               exit(1);
>           }
> +        cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
> +                                         KERNEL_GAP);
>           /* load initrd */
>           if (machine->initrd_filename) {
> -            initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
> -                                            KERNEL_GAP);
> +            initrd_base = cmdline_base;
>               initrd_size = load_image_targphys(machine->initrd_filename,
>                                                 initrd_base,
>                                                 machine->ram_size - initrd_base);
> @@ -181,8 +182,6 @@ static void ppc_heathrow_init(MachineState *machine)
>                   exit(1);
>               }
>               cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size);
> -        } else {
> -            cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + KERNEL_GAP);
>           }
>           ppc_boot_device = 'm';
>       } else {

Is there any particular reason why you would want to avoid the else branch? I don't 
feel this patch is an improvement since by always setting cmdline_base to a non-zero 
value, as a reviewer I then have to check all other uses of cmdline_base in the file 
to ensure that this doesn't cause any issues.

I much prefer the existing version since setting the values of cmdline_base and 
initrd_base is very clearly scoped within the if statement.


ATB,

Mark.
BALATON Zoltan Oct. 14, 2022, 11:56 a.m. UTC | #2
On Fri, 14 Oct 2022, Mark Cave-Ayland wrote:
> On 03/10/2022 21:13, BALATON Zoltan wrote:
>
>> By slight reorganisation we can avoid an else branch and some code
>> duplication which makes it easier to follow the code.
>> 
>> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
>> ---
>>   hw/ppc/mac_newworld.c | 6 +++---
>>   hw/ppc/mac_oldworld.c | 7 +++----
>>   2 files changed, 6 insertions(+), 7 deletions(-)
>> 
>> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
>> index 6bc3bd19be..73b01e8c6d 100644
>> --- a/hw/ppc/mac_newworld.c
>> +++ b/hw/ppc/mac_newworld.c
>> @@ -194,9 +194,11 @@ static void ppc_core99_init(MachineState *machine)
>>                            machine->kernel_filename);
>>               exit(1);
>>           }
>> +        cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
>> +                                         KERNEL_GAP);
>>           /* load initrd */
>>           if (machine->initrd_filename) {
>> -            initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + 
>> KERNEL_GAP);
>> +            initrd_base = cmdline_base;
>>               initrd_size = load_image_targphys(machine->initrd_filename,
>>                                                 initrd_base,
>>                                                 machine->ram_size - 
>> initrd_base);
>> @@ -206,8 +208,6 @@ static void ppc_core99_init(MachineState *machine)
>>                   exit(1);
>>               }
>>               cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size);
>> -        } else {
>> -            cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + 
>> KERNEL_GAP);
>>           }
>>           ppc_boot_device = 'm';
>>       } else {
>> diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
>> index cb67e44081..b424729a39 100644
>> --- a/hw/ppc/mac_oldworld.c
>> +++ b/hw/ppc/mac_oldworld.c
>> @@ -168,10 +168,11 @@ static void ppc_heathrow_init(MachineState *machine)
>>                            machine->kernel_filename);
>>               exit(1);
>>           }
>> +        cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
>> +                                         KERNEL_GAP);
>>           /* load initrd */
>>           if (machine->initrd_filename) {
>> -            initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
>> -                                            KERNEL_GAP);
>> +            initrd_base = cmdline_base;
>>               initrd_size = load_image_targphys(machine->initrd_filename,
>>                                                 initrd_base,
>>                                                 machine->ram_size - 
>> initrd_base);
>> @@ -181,8 +182,6 @@ static void ppc_heathrow_init(MachineState *machine)
>>                   exit(1);
>>               }
>>               cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size);
>> -        } else {
>> -            cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + 
>> KERNEL_GAP);
>>           }
>>           ppc_boot_device = 'm';
>>       } else {
>
> Is there any particular reason why you would want to avoid the else branch? I

It avoids code duplication and to me it's easier to follow than an else 
branch. With this patch cmdline_base calculation is clearly tied to 
kernel_base and kernel_size if only kernel is used and initrd_base 
initrd_size when initrd is used. With the else branch it's less obvious 
because it's set much later in the else branch while initrd_base 
duplicates it above. So avoiding this duplication makes the code easier to 
read and less prone to errors if the calculation is ever modified.

> don't feel this patch is an improvement since by always setting cmdline_base 
> to a non-zero value, as a reviewer I then have to check all other uses of 
> cmdline_base in the file to ensure that this doesn't cause any issues.

There aren't that many uses that it's difficult to check and this only 
need to be done once.

> I much prefer the existing version since setting the values of cmdline_base 
> and initrd_base is very clearly scoped within the if statement.

What can I say, it's hard to argue with preferences but avoiding code 
duplication is worth the effort reviewing this patch in my opinion.

Regards,
BALATON Zoltan
BALATON Zoltan Oct. 14, 2022, 3:25 p.m. UTC | #3
On Fri, 14 Oct 2022, BALATON Zoltan wrote:
> On Fri, 14 Oct 2022, Mark Cave-Ayland wrote:
>> On 03/10/2022 21:13, BALATON Zoltan wrote:
>> 
>>> By slight reorganisation we can avoid an else branch and some code
>>> duplication which makes it easier to follow the code.
>>> 
>>> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
>>> ---
>>>   hw/ppc/mac_newworld.c | 6 +++---
>>>   hw/ppc/mac_oldworld.c | 7 +++----
>>>   2 files changed, 6 insertions(+), 7 deletions(-)
>>> 
>>> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
>>> index 6bc3bd19be..73b01e8c6d 100644
>>> --- a/hw/ppc/mac_newworld.c
>>> +++ b/hw/ppc/mac_newworld.c
>>> @@ -194,9 +194,11 @@ static void ppc_core99_init(MachineState *machine)
>>>                            machine->kernel_filename);
>>>               exit(1);
>>>           }
>>> +        cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
>>> +                                         KERNEL_GAP);
>>>           /* load initrd */
>>>           if (machine->initrd_filename) {
>>> -            initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + 
>>> KERNEL_GAP);
>>> +            initrd_base = cmdline_base;
>>>               initrd_size = load_image_targphys(machine->initrd_filename,
>>>                                                 initrd_base,
>>>                                                 machine->ram_size - 
>>> initrd_base);
>>> @@ -206,8 +208,6 @@ static void ppc_core99_init(MachineState *machine)
>>>                   exit(1);
>>>               }
>>>               cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size);
>>> -        } else {
>>> -            cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + 
>>> KERNEL_GAP);
>>>           }
>>>           ppc_boot_device = 'm';
>>>       } else {
>>> diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
>>> index cb67e44081..b424729a39 100644
>>> --- a/hw/ppc/mac_oldworld.c
>>> +++ b/hw/ppc/mac_oldworld.c
>>> @@ -168,10 +168,11 @@ static void ppc_heathrow_init(MachineState *machine)
>>>                            machine->kernel_filename);
>>>               exit(1);
>>>           }
>>> +        cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
>>> +                                         KERNEL_GAP);
>>>           /* load initrd */
>>>           if (machine->initrd_filename) {
>>> -            initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
>>> -                                            KERNEL_GAP);
>>> +            initrd_base = cmdline_base;
>>>               initrd_size = load_image_targphys(machine->initrd_filename,
>>>                                                 initrd_base,
>>>                                                 machine->ram_size - 
>>> initrd_base);
>>> @@ -181,8 +182,6 @@ static void ppc_heathrow_init(MachineState *machine)
>>>                   exit(1);
>>>               }
>>>               cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size);
>>> -        } else {
>>> -            cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + 
>>> KERNEL_GAP);
>>>           }
>>>           ppc_boot_device = 'm';
>>>       } else {
>> 
>> Is there any particular reason why you would want to avoid the else branch? 
>> I
>
> It avoids code duplication and to me it's easier to follow than an else 
> branch. With this patch cmdline_base calculation is clearly tied to 
> kernel_base and kernel_size if only kernel is used and initrd_base 
> initrd_size when initrd is used. With the else branch it's less obvious 
> because it's set much later in the else branch while initrd_base duplicates 
> it above. So avoiding this duplication makes the code easier to read and less 
> prone to errors if the calculation is ever modified.
>
>> don't feel this patch is an improvement since by always setting 
>> cmdline_base to a non-zero value, as a reviewer I then have to check all 
>> other uses of cmdline_base in the file to ensure that this doesn't cause 
>> any issues.
>
> There aren't that many uses that it's difficult to check and this only need 
> to be done once.
>
>> I much prefer the existing version since setting the values of cmdline_base 
>> and initrd_base is very clearly scoped within the if statement.
>
> What can I say, it's hard to argue with preferences but avoiding code 
> duplication is worth the effort reviewing this patch in my opinion.

Also compare the before and after this series:

https://github.com/patchew-project/qemu/blob/master/hw/ppc/mac_newworld.c
https://github.com/patchew-project/qemu/blob/9c1cd2828b3d3bd3a7068134a57ae9bb07f5a681/hw/ppc/mac_newworld.c

I think the result is much easier to follow without else brances as you 
can read it from top to bottom instead of jumping around in else branches 
that is less clear and also more lines. Also setting default value avoids 
any used uninitialised cases which you would need to check if you set vars 
in if-else instead so unlike what you say this does not introduce such 
cases but closes the possibility instead. So please take the time to 
review it in exchange of the time I've put it in writing it.

Regards,
BALATON Zoltan
Mark Cave-Ayland Oct. 28, 2022, 8:54 a.m. UTC | #4
On 14/10/2022 16:25, BALATON Zoltan wrote:

> On Fri, 14 Oct 2022, BALATON Zoltan wrote:
>> On Fri, 14 Oct 2022, Mark Cave-Ayland wrote:
>>> On 03/10/2022 21:13, BALATON Zoltan wrote:
>>>
>>>> By slight reorganisation we can avoid an else branch and some code
>>>> duplication which makes it easier to follow the code.
>>>>
>>>> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
>>>> ---
>>>>   hw/ppc/mac_newworld.c | 6 +++---
>>>>   hw/ppc/mac_oldworld.c | 7 +++----
>>>>   2 files changed, 6 insertions(+), 7 deletions(-)
>>>>
>>>> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
>>>> index 6bc3bd19be..73b01e8c6d 100644
>>>> --- a/hw/ppc/mac_newworld.c
>>>> +++ b/hw/ppc/mac_newworld.c
>>>> @@ -194,9 +194,11 @@ static void ppc_core99_init(MachineState *machine)
>>>>                            machine->kernel_filename);
>>>>               exit(1);
>>>>           }
>>>> +        cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
>>>> +                                         KERNEL_GAP);
>>>>           /* load initrd */
>>>>           if (machine->initrd_filename) {
>>>> -            initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + 
>>>> KERNEL_GAP);
>>>> +            initrd_base = cmdline_base;
>>>>               initrd_size = load_image_targphys(machine->initrd_filename,
>>>>                                                 initrd_base,
>>>>                                                 machine->ram_size - initrd_base);
>>>> @@ -206,8 +208,6 @@ static void ppc_core99_init(MachineState *machine)
>>>>                   exit(1);
>>>>               }
>>>>               cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size);
>>>> -        } else {
>>>> -            cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + 
>>>> KERNEL_GAP);
>>>>           }
>>>>           ppc_boot_device = 'm';
>>>>       } else {
>>>> diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
>>>> index cb67e44081..b424729a39 100644
>>>> --- a/hw/ppc/mac_oldworld.c
>>>> +++ b/hw/ppc/mac_oldworld.c
>>>> @@ -168,10 +168,11 @@ static void ppc_heathrow_init(MachineState *machine)
>>>>                            machine->kernel_filename);
>>>>               exit(1);
>>>>           }
>>>> +        cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
>>>> +                                         KERNEL_GAP);
>>>>           /* load initrd */
>>>>           if (machine->initrd_filename) {
>>>> -            initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
>>>> -                                            KERNEL_GAP);
>>>> +            initrd_base = cmdline_base;
>>>>               initrd_size = load_image_targphys(machine->initrd_filename,
>>>>                                                 initrd_base,
>>>>                                                 machine->ram_size - initrd_base);
>>>> @@ -181,8 +182,6 @@ static void ppc_heathrow_init(MachineState *machine)
>>>>                   exit(1);
>>>>               }
>>>>               cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size);
>>>> -        } else {
>>>> -            cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + 
>>>> KERNEL_GAP);
>>>>           }
>>>>           ppc_boot_device = 'm';
>>>>       } else {
>>>
>>> Is there any particular reason why you would want to avoid the else branch? I
>>
>> It avoids code duplication and to me it's easier to follow than an else branch. 
>> With this patch cmdline_base calculation is clearly tied to kernel_base and 
>> kernel_size if only kernel is used and initrd_base initrd_size when initrd is used. 
>> With the else branch it's less obvious because it's set much later in the else 
>> branch while initrd_base duplicates it above. So avoiding this duplication makes 
>> the code easier to read and less prone to errors if the calculation is ever modified.
>>
>>> don't feel this patch is an improvement since by always setting cmdline_base to a 
>>> non-zero value, as a reviewer I then have to check all other uses of cmdline_base 
>>> in the file to ensure that this doesn't cause any issues.
>>
>> There aren't that many uses that it's difficult to check and this only need to be 
>> done once.
>>
>>> I much prefer the existing version since setting the values of cmdline_base and 
>>> initrd_base is very clearly scoped within the if statement.
>>
>> What can I say, it's hard to argue with preferences but avoiding code duplication 
>> is worth the effort reviewing this patch in my opinion.
> 
> Also compare the before and after this series:
> 
> https://github.com/patchew-project/qemu/blob/master/hw/ppc/mac_newworld.c
> https://github.com/patchew-project/qemu/blob/9c1cd2828b3d3bd3a7068134a57ae9bb07f5a681/hw/ppc/mac_newworld.c 
> 
> 
> I think the result is much easier to follow without else brances as you can read it 
> from top to bottom instead of jumping around in else branches that is less clear and 
> also more lines. Also setting default value avoids any used uninitialised cases which 
> you would need to check if you set vars in if-else instead so unlike what you say 
> this does not introduce such cases but closes the possibility instead. So please take 
> the time to review it in exchange of the time I've put it in writing it.

I've revisited this looking at the links provided above, and after consideration my 
opinion is that that having the more localised scoping of the variables is more 
worthwhile (i.e. the compiler can better catch errors) rather than eliminating the 
duplication for a couple of lines. Please drop this patch before posting the next 
version of the series.


ATB,

Mark.
BALATON Zoltan Oct. 28, 2022, 11:59 a.m. UTC | #5
On Fri, 28 Oct 2022, Mark Cave-Ayland wrote:
> On 14/10/2022 16:25, BALATON Zoltan wrote:
>> On Fri, 14 Oct 2022, BALATON Zoltan wrote:
>>> On Fri, 14 Oct 2022, Mark Cave-Ayland wrote:
>>>> On 03/10/2022 21:13, BALATON Zoltan wrote:
>>>> 
>>>>> By slight reorganisation we can avoid an else branch and some code
>>>>> duplication which makes it easier to follow the code.
>>>>> 
>>>>> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
>>>>> ---
>>>>>   hw/ppc/mac_newworld.c | 6 +++---
>>>>>   hw/ppc/mac_oldworld.c | 7 +++----
>>>>>   2 files changed, 6 insertions(+), 7 deletions(-)
>>>>> 
>>>>> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
>>>>> index 6bc3bd19be..73b01e8c6d 100644
>>>>> --- a/hw/ppc/mac_newworld.c
>>>>> +++ b/hw/ppc/mac_newworld.c
>>>>> @@ -194,9 +194,11 @@ static void ppc_core99_init(MachineState *machine)
>>>>>                            machine->kernel_filename);
>>>>>               exit(1);
>>>>>           }
>>>>> +        cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
>>>>> +                                         KERNEL_GAP);
>>>>>           /* load initrd */
>>>>>           if (machine->initrd_filename) {
>>>>> -            initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + 
>>>>> KERNEL_GAP);
>>>>> +            initrd_base = cmdline_base;
>>>>>               initrd_size = 
>>>>> load_image_targphys(machine->initrd_filename,
>>>>>                                                 initrd_base,
>>>>>                                                 machine->ram_size - 
>>>>> initrd_base);
>>>>> @@ -206,8 +208,6 @@ static void ppc_core99_init(MachineState *machine)
>>>>>                   exit(1);
>>>>>               }
>>>>>               cmdline_base = TARGET_PAGE_ALIGN(initrd_base + 
>>>>> initrd_size);
>>>>> -        } else {
>>>>> -            cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size 
>>>>> + KERNEL_GAP);
>>>>>           }
>>>>>           ppc_boot_device = 'm';
>>>>>       } else {
>>>>> diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
>>>>> index cb67e44081..b424729a39 100644
>>>>> --- a/hw/ppc/mac_oldworld.c
>>>>> +++ b/hw/ppc/mac_oldworld.c
>>>>> @@ -168,10 +168,11 @@ static void ppc_heathrow_init(MachineState 
>>>>> *machine)
>>>>>                            machine->kernel_filename);
>>>>>               exit(1);
>>>>>           }
>>>>> +        cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
>>>>> +                                         KERNEL_GAP);
>>>>>           /* load initrd */
>>>>>           if (machine->initrd_filename) {
>>>>> -            initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
>>>>> -                                            KERNEL_GAP);
>>>>> +            initrd_base = cmdline_base;
>>>>>               initrd_size = 
>>>>> load_image_targphys(machine->initrd_filename,
>>>>>                                                 initrd_base,
>>>>>                                                 machine->ram_size - 
>>>>> initrd_base);
>>>>> @@ -181,8 +182,6 @@ static void ppc_heathrow_init(MachineState *machine)
>>>>>                   exit(1);
>>>>>               }
>>>>>               cmdline_base = TARGET_PAGE_ALIGN(initrd_base + 
>>>>> initrd_size);
>>>>> -        } else {
>>>>> -            cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size 
>>>>> + KERNEL_GAP);
>>>>>           }
>>>>>           ppc_boot_device = 'm';
>>>>>       } else {
>>>> 
>>>> Is there any particular reason why you would want to avoid the else 
>>>> branch? I
>>> 
>>> It avoids code duplication and to me it's easier to follow than an else 
>>> branch. With this patch cmdline_base calculation is clearly tied to 
>>> kernel_base and kernel_size if only kernel is used and initrd_base 
>>> initrd_size when initrd is used. With the else branch it's less obvious 
>>> because it's set much later in the else branch while initrd_base 
>>> duplicates it above. So avoiding this duplication makes the code easier to 
>>> read and less prone to errors if the calculation is ever modified.
>>> 
>>>> don't feel this patch is an improvement since by always setting 
>>>> cmdline_base to a non-zero value, as a reviewer I then have to check all 
>>>> other uses of cmdline_base in the file to ensure that this doesn't cause 
>>>> any issues.
>>> 
>>> There aren't that many uses that it's difficult to check and this only 
>>> need to be done once.
>>> 
>>>> I much prefer the existing version since setting the values of 
>>>> cmdline_base and initrd_base is very clearly scoped within the if 
>>>> statement.
>>> 
>>> What can I say, it's hard to argue with preferences but avoiding code 
>>> duplication is worth the effort reviewing this patch in my opinion.
>> 
>> Also compare the before and after this series:
>> 
>> https://github.com/patchew-project/qemu/blob/master/hw/ppc/mac_newworld.c
>> https://github.com/patchew-project/qemu/blob/9c1cd2828b3d3bd3a7068134a57ae9bb07f5a681/hw/ppc/mac_newworld.c 
>> 
>> I think the result is much easier to follow without else brances as you can 
>> read it from top to bottom instead of jumping around in else branches that 
>> is less clear and also more lines. Also setting default value avoids any 
>> used uninitialised cases which you would need to check if you set vars in 
>> if-else instead so unlike what you say this does not introduce such cases 
>> but closes the possibility instead. So please take the time to review it in 
>> exchange of the time I've put it in writing it.
>
> I've revisited this looking at the links provided above, and after 
> consideration my opinion is that that having the more localised scoping of 
> the variables is more worthwhile (i.e. the compiler can better catch errors) 
> rather than eliminating the duplication for a couple of lines. Please drop 
> this patch before posting the next version of the series.

I think duplicating the same calculation for both initrd_base and 
cmdline_base in the else branch is error prone so removing that is better 
but I've sent a v6 with this patch removed so you can chose which one to 
apply before the freeze.

Regards,
BALATON Zoltan
diff mbox series

Patch

diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 6bc3bd19be..73b01e8c6d 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -194,9 +194,11 @@  static void ppc_core99_init(MachineState *machine)
                          machine->kernel_filename);
             exit(1);
         }
+        cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
+                                         KERNEL_GAP);
         /* load initrd */
         if (machine->initrd_filename) {
-            initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + KERNEL_GAP);
+            initrd_base = cmdline_base;
             initrd_size = load_image_targphys(machine->initrd_filename,
                                               initrd_base,
                                               machine->ram_size - initrd_base);
@@ -206,8 +208,6 @@  static void ppc_core99_init(MachineState *machine)
                 exit(1);
             }
             cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size);
-        } else {
-            cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + KERNEL_GAP);
         }
         ppc_boot_device = 'm';
     } else {
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index cb67e44081..b424729a39 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -168,10 +168,11 @@  static void ppc_heathrow_init(MachineState *machine)
                          machine->kernel_filename);
             exit(1);
         }
+        cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
+                                         KERNEL_GAP);
         /* load initrd */
         if (machine->initrd_filename) {
-            initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size +
-                                            KERNEL_GAP);
+            initrd_base = cmdline_base;
             initrd_size = load_image_targphys(machine->initrd_filename,
                                               initrd_base,
                                               machine->ram_size - initrd_base);
@@ -181,8 +182,6 @@  static void ppc_heathrow_init(MachineState *machine)
                 exit(1);
             }
             cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size);
-        } else {
-            cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + KERNEL_GAP);
         }
         ppc_boot_device = 'm';
     } else {