The Xen HVM unplug protocol [1] specifies a mechanism to allow guests to request unplug of 'aux' disks (which is stated to mean all IDE disks, except the primary master). This patch adds support for that unplug request. NOTE: The semantics of what happens if unplug of all disks and 'aux' disks is simultaneously requests is not clear. The patch makes that assumption that an 'all' request overrides an 'aux' request. [1] http://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=docs/misc/hvm-emulated-unplug.markdown Signed-off-by: Paul Durrant <paul.durrant@citrix.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> ---- Cc: Stefano Stabellini <sstabellini@kernel.org> Cc: Anthony Perard <anthony.perard@citrix.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Richard Henderson <rth@twiddle.net> Cc: Eduardo Habkost <ehabkost@redhat.com> Cc: "Michael S. Tsirkin" <mst@redhat.com> Cc: John Snow <jsnow@redhat.com>
34 lines
1.1 KiB
C
34 lines
1.1 KiB
C
#ifndef HW_IDE_H
|
|
#define HW_IDE_H
|
|
|
|
#include "hw/isa/isa.h"
|
|
#include "hw/pci/pci.h"
|
|
#include "exec/memory.h"
|
|
|
|
#define MAX_IDE_DEVS 2
|
|
|
|
/* ide-isa.c */
|
|
ISADevice *isa_ide_init(ISABus *bus, int iobase, int iobase2, int isairq,
|
|
DriveInfo *hd0, DriveInfo *hd1);
|
|
|
|
/* ide-pci.c */
|
|
void pci_cmd646_ide_init(PCIBus *bus, DriveInfo **hd_table,
|
|
int secondary_ide_enabled);
|
|
PCIDevice *pci_piix3_xen_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
|
|
PCIDevice *pci_piix3_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
|
|
PCIDevice *pci_piix4_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
|
|
int pci_piix3_xen_ide_unplug(DeviceState *dev, bool aux);
|
|
void vt82c686b_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
|
|
|
|
/* ide-mmio.c */
|
|
void mmio_ide_init_drives(DeviceState *dev, DriveInfo *hd0, DriveInfo *hd1);
|
|
|
|
int ide_get_geometry(BusState *bus, int unit,
|
|
int16_t *cyls, int8_t *heads, int8_t *secs);
|
|
int ide_get_bios_chs_trans(BusState *bus, int unit);
|
|
|
|
/* ide/core.c */
|
|
void ide_drive_get(DriveInfo **hd, int max_bus);
|
|
|
|
#endif /* HW_IDE_H */
|