usb: add support for microsoft os descriptors

This patch adds support for special usb descriptors used by microsoft
windows.  They allow more fine-grained control over driver binding and
adding entries to the registry for configuration.

As this is a guest-visible change the "msos-desc" compat property
has been added to turn this off for 1.7 + older

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Gerd Hoffmann 2013-11-20 07:32:31 +01:00
parent 1cf892ca26
commit 5319dc7b42
9 changed files with 297 additions and 6 deletions

View file

@ -241,6 +241,7 @@ uint16_t pvpanic_port(void);
int e820_add_entry(uint64_t, uint64_t, uint32_t);
#define PC_Q35_COMPAT_1_7 \
PC_COMPAT_1_7, \
{\
.driver = "hpet",\
.property = HPET_INTCAP,\
@ -259,7 +260,15 @@ int e820_add_entry(uint64_t, uint64_t, uint32_t);
PC_COMPAT_1_4, \
PC_Q35_COMPAT_1_5
#define PC_COMPAT_1_7 \
{\
.driver = TYPE_USB_DEVICE,\
.property = "msos-desc",\
.value = "no",\
}
#define PC_COMPAT_1_6 \
PC_COMPAT_1_7, \
{\
.driver = "e1000",\
.property = "mitigation",\

View file

@ -182,6 +182,7 @@ typedef struct USBDescIface USBDescIface;
typedef struct USBDescEndpoint USBDescEndpoint;
typedef struct USBDescOther USBDescOther;
typedef struct USBDescString USBDescString;
typedef struct USBDescMSOS USBDescMSOS;
struct USBDescString {
uint8_t index;
@ -208,6 +209,8 @@ struct USBEndpoint {
enum USBDeviceFlags {
USB_DEV_FLAG_FULL_PATH,
USB_DEV_FLAG_IS_HOST,
USB_DEV_FLAG_MSOS_DESC_ENABLE,
USB_DEV_FLAG_MSOS_DESC_IN_USE,
};
/* definition of a USB device */