Patchwork [master,stable-0.12] Don't load options roms intended to be loaded by the bios in qemu

login
register
mail settings
Submitter Avi Kivity
Date Dec. 22, 2009, 9:25 a.m.
Message ID <1261473913-28442-1-git-send-email-avi@redhat.com>
Download mbox | patch
Permalink /patch/41602/
State New
Headers show

Comments

Avi Kivity - Dec. 22, 2009, 9:25 a.m.
The first such option rom will load at address 0, which isn't very nice,
and the second will report a conflict and abort, which is horrible.

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 hw/loader.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
Aurelien Jarno - Dec. 22, 2009, 9:35 a.m.
On Tue, Dec 22, 2009 at 11:25:13AM +0200, Avi Kivity wrote:
> The first such option rom will load at address 0, which isn't very nice,
> and the second will report a conflict and abort, which is horrible.
> 
> Signed-off-by: Avi Kivity <avi@redhat.com>
> ---
>  hw/loader.c |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/hw/loader.c b/hw/loader.c
> index 2ceb8eb..c6bf0f1 100644
> --- a/hw/loader.c
> +++ b/hw/loader.c
> @@ -654,6 +654,9 @@ int rom_load_all(void)
>      Rom *rom;
>  
>      QTAILQ_FOREACH(rom, &roms, next) {
> +        if (!rom->addr) {
> +            continue;
> +        }

Some roms needs to be loaded at address 0, it's the case for example of
the arm versatile bootloader. Adding this code will break the board
emulation.

>          if (addr > rom->addr) {
>              fprintf(stderr, "rom: requested regions overlap "
>                      "(rom %s. free=0x" TARGET_FMT_plx
> -- 
> 1.6.5.3
> 
> 
> 
>
Avi Kivity - Dec. 22, 2009, 9:40 a.m.
On 12/22/2009 11:35 AM, Aurelien Jarno wrote:
> On Tue, Dec 22, 2009 at 11:25:13AM +0200, Avi Kivity wrote:
>    
>> The first such option rom will load at address 0, which isn't very nice,
>> and the second will report a conflict and abort, which is horrible.
>>
>> Signed-off-by: Avi Kivity<avi@redhat.com>
>> ---
>>   hw/loader.c |    3 +++
>>   1 files changed, 3 insertions(+), 0 deletions(-)
>>
>> diff --git a/hw/loader.c b/hw/loader.c
>> index 2ceb8eb..c6bf0f1 100644
>> --- a/hw/loader.c
>> +++ b/hw/loader.c
>> @@ -654,6 +654,9 @@ int rom_load_all(void)
>>       Rom *rom;
>>
>>       QTAILQ_FOREACH(rom,&roms, next) {
>> +        if (!rom->addr) {
>> +            continue;
>> +        }
>>      
> Some roms needs to be loaded at address 0, it's the case for example of
> the arm versatile bootloader. Adding this code will break the board
> emulation.
>    

The idea of keying bios-loading or host-loading on address is broken 
(another instance of mixing control and data).  We need a separate 
control for this.  I'll leave this to the authors of the code as I can't 
make heads or tails of it.

Patch

diff --git a/hw/loader.c b/hw/loader.c
index 2ceb8eb..c6bf0f1 100644
--- a/hw/loader.c
+++ b/hw/loader.c
@@ -654,6 +654,9 @@  int rom_load_all(void)
     Rom *rom;
 
     QTAILQ_FOREACH(rom, &roms, next) {
+        if (!rom->addr) {
+            continue;
+        }
         if (addr > rom->addr) {
             fprintf(stderr, "rom: requested regions overlap "
                     "(rom %s. free=0x" TARGET_FMT_plx