Re: Configuration vs. compat hints [was Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities]

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

 



On 06/15/2009 04:20 PM, Anthony Liguori wrote:
>>
>>>> then turns on the power.  Command line options are the parts lying 
>>>> around when we start.
>>>>
>>>> btw, -drive needs to be separated:
>>>>
>>>>   -controller type=lsi1234,pci_addr=foobar,name=blah
>>>>   -drive file=foo.img,controller=blah,index=0
>>>>   -drive file=bar.img,controller=blah,index=1
>>>>
>>>> Drives to not have pci addresses.
>>>
>>> Drivers don't have indexes and buses but we specify it on the -drive 
>>> line. 
>>
>> Drives do have indexes.  On old parallel scsi drives you set the 
>> index by clicking a button on the back of the drive to cycle through 
>> scsi addresses 0-7.  An IDE drive's index is determined by the cable 
>> (master/slave).  A SATA drive's index is determined by which header 
>> on the motherboard the drive connects to.
>
>
> It's not at all that simple.   SCSI has a hierarchical address 
> mechanism with 0-7 targets but then potentially multiple LUNs per 
> target.  Today, we always emulate a single LUN per target but if we 
> ever wanted to support more than 7 disks on a SCSI controller, we 
> would have to add multiple LUN support too.  So the current linear 
> unit= parameter is actually pretty broken for SCSI.

Well, another level in the hierarchy, but I don't think it materially 
changes things.

>
> For IDE, it's a combination of bus, slot, and master/slave.  For 
> virtio, it's just a PCI address.  What we really need is something 
> that is more opaque and controller specific. 

virtio also has a bus (did you mean the pci bus for IDE?), master/slave 
is the index.  virtio doesn't have index, but IMO that was a mistake and 
we should have designed it as a disk controller in the first place.

> For instance, if we were going to do controllers...
>
> -controller type=lsi1234,pci_addr=foobar,name=blah
> -controller-disk controller=blah,target=0,lun=1,name=sda
>
> -controller type=ide,pci_addr=barfoo,name=ide
> -controller-disk controller=ide,slot=secondary,cable=slave,name=hdd
>
> -drive file=foo.img,controller-disk=sda
> -drive file=bar.img,controller-disk=hdd
>
> And having "-hdd file=foo.img" be short-hand for "-drive 
> file=%s,controller-disk=%s".

Yeah.

>>
>>
>> If by bus you mean the if= parameter, then drives certainly do have 
>> buses.  Just try connecting the scsi drive from the previous 
>> paragraph to a USB port.
>
> No, I meant drive file=foo.img,bus=3.  If that doesn't seem obvious 
> what it should do to you that's because it isn't at all obvious :-)  
> It ends up skipping a predefined number of locations in the drive 
> table.  This is pretty broken fundamentally because it assumes 
> controllers always support a fixed number of devices.  Nothing really 
> respects bus_id though so in practice, I assume it's almost 
> universally broken.

Isn't the drive table something totally internal?  And how does bus= 
relate to it?

Confused.


-- 
error compiling committee.c: too many arguments to function

_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/virtualization

[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux