Re: [libvirt] [RFC 09/12] RFC: Don't reserve slot 1 if a USB controller is defined there

2011-08-23 Thread Wen Congyang
At 08/24/2011 09:42 AM, Wen Congyang Write:
> At 08/22/2011 03:01 AM, Marc-André Lureau Write:
>> ---
>>  src/qemu/qemu_command.c |   10 +-
>>  1 files changed, 9 insertions(+), 1 deletions(-)
>>
>> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
>> index 9ea4b7c..d25f34f 100644
>> --- a/src/qemu/qemu_command.c
>> +++ b/src/qemu/qemu_command.c
>> @@ -1093,6 +1093,7 @@ qemuAssignDevicePCISlots(virDomainDefPtr def, 
>> qemuDomainPCIAddressSetPtr addrs)
>>  {
>>  int i;
>>  bool reservedIDE = false;
>> +bool reservedUSB = false;
>>  bool reservedVGA = false;
>>  
>>  /* Host bridge */
>> @@ -1123,13 +1124,20 @@ qemuAssignDevicePCISlots(virDomainDefPtr def, 
>> qemuDomainPCIAddressSetPtr addrs)
>>  def->controllers[i]->info.addr.pci.slot = 1;
>>  def->controllers[i]->info.addr.pci.function = 1;
>>  }
>> +} else if (def->controllers[i]->type == 
>> VIR_DOMAIN_CONTROLLER_TYPE_USB &&
>> +   def->controllers[i]->idx == 0 &&
>> +   def->controllers[i]->info.type == 
>> VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
>> +   def->controllers[i]->info.addr.pci.domain == 0 &&
>> +   def->controllers[i]->info.addr.pci.bus == 0 &&
>> +   def->controllers[i]->info.addr.pci.slot == 1) {
>> +reservedUSB = true;
> 
> The first use controller's address is 0:0:1:2, you don't check the function 
> value here.
> I think the code should be like IDE's code:
> if the type is not VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
> init def->controllers[i]->info
> else
> check the pci address, if the address is wrong, report a error

I read the patch 3, and find that you do not append -usb in the command line 
while using
usb controller. So all usb controllers should not use slot 1(because we may 
append
-usbdevice in the command line)

> 
> Thanks
> Wen Congyang
>>  }
>>  }
>>  
>>  /* PIIX3 (ISA bridge, IDE controller, something else unknown, USB 
>> controller)
>>   * hardcoded slot=1, multifunction device
>>   */
>> -if (!reservedIDE &&
>> +if (!reservedIDE && !reservedUSB &&
>>  qemuDomainPCIAddressReserveSlot(addrs, 1) < 0)
>>  goto error;
>>  
> 
> 
> --
> libvir-list mailing list
> libvir-list@redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
> 


--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


Re: [libvirt] [RFC 09/12] RFC: Don't reserve slot 1 if a USB controller is defined there

2011-08-23 Thread Wen Congyang
At 08/22/2011 03:01 AM, Marc-André Lureau Write:
> ---
>  src/qemu/qemu_command.c |   10 +-
>  1 files changed, 9 insertions(+), 1 deletions(-)
> 
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 9ea4b7c..d25f34f 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -1093,6 +1093,7 @@ qemuAssignDevicePCISlots(virDomainDefPtr def, 
> qemuDomainPCIAddressSetPtr addrs)
>  {
>  int i;
>  bool reservedIDE = false;
> +bool reservedUSB = false;
>  bool reservedVGA = false;
>  
>  /* Host bridge */
> @@ -1123,13 +1124,20 @@ qemuAssignDevicePCISlots(virDomainDefPtr def, 
> qemuDomainPCIAddressSetPtr addrs)
>  def->controllers[i]->info.addr.pci.slot = 1;
>  def->controllers[i]->info.addr.pci.function = 1;
>  }
> +} else if (def->controllers[i]->type == 
> VIR_DOMAIN_CONTROLLER_TYPE_USB &&
> +   def->controllers[i]->idx == 0 &&
> +   def->controllers[i]->info.type == 
> VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
> +   def->controllers[i]->info.addr.pci.domain == 0 &&
> +   def->controllers[i]->info.addr.pci.bus == 0 &&
> +   def->controllers[i]->info.addr.pci.slot == 1) {
> +reservedUSB = true;

The first use controller's address is 0:0:1:2, you don't check the function 
value here.
I think the code should be like IDE's code:
if the type is not VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
init def->controllers[i]->info
else
check the pci address, if the address is wrong, report a error

Thanks
Wen Congyang
>  }
>  }
>  
>  /* PIIX3 (ISA bridge, IDE controller, something else unknown, USB 
> controller)
>   * hardcoded slot=1, multifunction device
>   */
> -if (!reservedIDE &&
> +if (!reservedIDE && !reservedUSB &&
>  qemuDomainPCIAddressReserveSlot(addrs, 1) < 0)
>  goto error;
>  


--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [RFC 09/12] RFC: Don't reserve slot 1 if a USB controller is defined there

2011-08-21 Thread Marc-André Lureau
---
 src/qemu/qemu_command.c |   10 +-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 9ea4b7c..d25f34f 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -1093,6 +1093,7 @@ qemuAssignDevicePCISlots(virDomainDefPtr def, 
qemuDomainPCIAddressSetPtr addrs)
 {
 int i;
 bool reservedIDE = false;
+bool reservedUSB = false;
 bool reservedVGA = false;
 
 /* Host bridge */
@@ -1123,13 +1124,20 @@ qemuAssignDevicePCISlots(virDomainDefPtr def, 
qemuDomainPCIAddressSetPtr addrs)
 def->controllers[i]->info.addr.pci.slot = 1;
 def->controllers[i]->info.addr.pci.function = 1;
 }
+} else if (def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_USB 
&&
+   def->controllers[i]->idx == 0 &&
+   def->controllers[i]->info.type == 
VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
+   def->controllers[i]->info.addr.pci.domain == 0 &&
+   def->controllers[i]->info.addr.pci.bus == 0 &&
+   def->controllers[i]->info.addr.pci.slot == 1) {
+reservedUSB = true;
 }
 }
 
 /* PIIX3 (ISA bridge, IDE controller, something else unknown, USB 
controller)
  * hardcoded slot=1, multifunction device
  */
-if (!reservedIDE &&
+if (!reservedIDE && !reservedUSB &&
 qemuDomainPCIAddressReserveSlot(addrs, 1) < 0)
 goto error;
 
-- 
1.7.6

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list