q35/ahci: Pick up -cdrom and -hda options
This patch implements the backend for the Q35 board for us to be able to pick up and use drives defined by the -cdrom, -hda, or -drive if=ide shorthand options. Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Message-id: 1412187569-23452-7-git-send-email-jsnow@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
							parent
							
								
									6b9e03a4e7
								
							
						
					
					
						commit
						d93162e13c
					
				| 
						 | 
				
			
			@ -86,6 +86,7 @@ static void pc_q35_init(MachineState *machine)
 | 
			
		|||
    DeviceState *icc_bridge;
 | 
			
		||||
    PcGuestInfo *guest_info;
 | 
			
		||||
    ram_addr_t lowmem;
 | 
			
		||||
    DriveInfo *hd[MAX_SATA_PORTS];
 | 
			
		||||
 | 
			
		||||
    /* Check whether RAM fits below 4G (leaving 1/2 GByte for IO memory
 | 
			
		||||
     * and 256 Mbytes for PCI Express Enhanced Configuration Access Mapping
 | 
			
		||||
| 
						 | 
				
			
			@ -253,6 +254,9 @@ static void pc_q35_init(MachineState *machine)
 | 
			
		|||
                                           true, "ich9-ahci");
 | 
			
		||||
    idebus[0] = qdev_get_child_bus(&ahci->qdev, "ide.0");
 | 
			
		||||
    idebus[1] = qdev_get_child_bus(&ahci->qdev, "ide.1");
 | 
			
		||||
    g_assert_cmpint(MAX_SATA_PORTS, ==, ICH_AHCI(ahci)->ahci.ports);
 | 
			
		||||
    ide_drive_get(hd, ICH_AHCI(ahci)->ahci.ports);
 | 
			
		||||
    ahci_ide_create_devs(ahci, hd);
 | 
			
		||||
 | 
			
		||||
    if (usb_enabled(false)) {
 | 
			
		||||
        /* Should we create 6 UHCI according to ich9 spec? */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1419,3 +1419,18 @@ static void sysbus_ahci_register_types(void)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
type_init(sysbus_ahci_register_types)
 | 
			
		||||
 | 
			
		||||
void ahci_ide_create_devs(PCIDevice *dev, DriveInfo **hd)
 | 
			
		||||
{
 | 
			
		||||
    AHCIPCIState *d = ICH_AHCI(dev);
 | 
			
		||||
    AHCIState *ahci = &d->ahci;
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < ahci->ports; i++) {
 | 
			
		||||
        if (hd[i] == NULL) {
 | 
			
		||||
            continue;
 | 
			
		||||
        }
 | 
			
		||||
        ide_create_drive(&ahci->dev[i].port, 0, hd[i]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -332,4 +332,6 @@ void ahci_uninit(AHCIState *s);
 | 
			
		|||
 | 
			
		||||
void ahci_reset(AHCIState *s);
 | 
			
		||||
 | 
			
		||||
void ahci_ide_create_devs(PCIDevice *dev, DriveInfo **hd);
 | 
			
		||||
 | 
			
		||||
#endif /* HW_IDE_AHCI_H */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue