qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 2/2][UPDATE] Add arg -drive to define new drive


From: Laurent Vivier
Subject: Re: [Qemu-devel] [PATCH 2/2][UPDATE] Add arg -drive to define new drive with more features
Date: Mon, 12 Nov 2007 17:53:07 +0100

Le lundi 12 novembre 2007 à 18:44 +0200, Blue Swirl a écrit :
> On 11/12/07, Laurent Vivier <address@hidden> wrote:
> > It also defines the default interface type to "scsi" for targets
> > "realview", "SS-5", "SS-10", "versatilepb", "versatileab"
> > to keep old behavior, where "-hda" is a SCSI disk.
> 
> For maximal compatibility, I'd like the following mappings for SS-5,
> SS-10, and SS-600MP:
> -hda = SCSI ID 0
> -hdb = SCSI ID 1
> -hdc = -cdrom = SCSI ID 2
> -hdd = SCSI ID 3

Yes, there is mistake there.

> There is no bus 1, only 0. Maybe a warning should be issued for bus=1.

> I didn't find where this was implemented, so is the above in line with
> the patch?

See following lines:

...
#define HD_ALIAS "file=%s,bus=%d,unit=%d,media=disk"
...
    if (!strcmp(machine->name, "realview") ||
        !strcmp(machine->name, "SS-5") ||
        !strcmp(machine->name, "SS-10") ||
        !strcmp(machine->name, "versatilepb") ||
        !strcmp(machine->name, "versatileab")) {
        interface = IF_SCSI;
        max_devs = MAX_SCSI_DEVS;
    } else {
        interface = IF_IDE;
        max_devs = MAX_IDE_DEVS;
    }
...
            case QEMU_OPTION_hdb:
            case QEMU_OPTION_hdc:
            case QEMU_OPTION_hdd:
                  drive_add(HD_ALIAS, optarg, hd_index / MAX_IDE_DEVS,
                                               hd_index % MAX_IDE_DEVS);
...
Of course this last line is wrong...

> > Index: qemu/hw/sun4m.c
> 
> > -    if (hwdef->fd_base != (target_phys_addr_t)-1)
> > -        sun4m_fdctrl_init(slavio_irq[hwdef->fd_irq], hwdef->fd_base, 
> > fd_table);
> > +    if (hwdef->fd_base != (target_phys_addr_t)-1) {
> > +        for(i = 0; i < MAX_FD; i++) {
> > +            index = drive_get_index(IF_FLOPPY, 0, i);
> > +            if (index != -1)
> > +                fd[i] = drives_table[index].bdrv;
> > +            else
> > +                fd[i] = NULL;
> > +        }
> > +
> > +        sun4m_fdctrl_init(slavio_irq[hwdef->fd_irq], hwdef->fd_base, fd);
> > +    }
> 
> This is broken, there are zero or one floppy drives, never more.

I just try to mimic original behavior.
I'll correct this.

> > Index: qemu/hw/sun4u.c
> 
> > -    floppy_controller = fdctrl_init(NULL/*6*/, 2, 0, 0x3f0, fd_table);
> > +    for(i = 0; i < MAX_FD; i++) {
> > +        index = drive_get_index(IF_FLOPPY, 0, i);
> > +       if (index != -1)
> > +           fd[i] = drives_table[index].bdrv;
> > +       else
> > +           fd[i] = NULL;
> > +    }
> > +    floppy_controller = fdctrl_init(NULL/*6*/, 2, 0, 0x3f0, fd);
> 
> I think same applies here (0 to 1 drives), but as the hardware is
> PC-like, technically it may be possible that someone could replace the
> cables and insert additional floppy drives.

ditto

Laurent
-- 
------------- address@hidden  --------------
 "In short: just say NO TO DRUGS and maybe you won't
   end up like the Hurd people." -- Linus Torvald

Attachment: signature.asc
Description: Ceci est une partie de message numériquement signée


reply via email to

[Prev in Thread] Current Thread [Next in Thread]