Compare commits

..

1 Commits

Author SHA1 Message Date
Gerd Hoffmann
fee5b753ff seabios: update to 1.9.1 stable release
git shortlog rel-1.9.0..rel-1.9.1
=================================

Cole Robinson (1):
      biostables: Support SMBIOS 2.6+ UUID format

Kevin O'Connor (7):
      xhci: Check for device disconnects during USB2 reset polling
      xhci: Wait for port enable even for USB3 devices
      sdcard: Only enable error_irq_enable for bits defined in SDHCI v1 spec
      sdcard: fix typo causing 32bit write to 16bit block_size field
      nmi: Don't try to switch onto extra stack in NMI handler
      scsi: Do not call printf() from scsi_is_ready()
      coreboot: Check for unaligned cbfs header

Marcel Apfelbaum (1):
      fw/pci: do not automatically allocate IO region for PCIe bridges

Roger Pau Monne (1):
      build: fix typo in buildversion.py

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2016-03-01 09:37:07 +01:00
26 changed files with 100 additions and 105 deletions

View File

@@ -140,9 +140,9 @@ static void hid_pointer_event(DeviceState *dev, QemuConsole *src,
case INPUT_EVENT_KIND_BTN:
if (evt->u.btn->down) {
e->buttons_state |= bmap[evt->u.btn->button];
if (evt->u.btn->button == INPUT_BUTTON_WHEEL_UP) {
if (evt->u.btn->button == INPUT_BUTTON_WHEELUP) {
e->dz--;
} else if (evt->u.btn->button == INPUT_BUTTON_WHEEL_DOWN) {
} else if (evt->u.btn->button == INPUT_BUTTON_WHEELDOWN) {
e->dz++;
}
} else {

View File

@@ -406,9 +406,9 @@ static void ps2_mouse_event(DeviceState *dev, QemuConsole *src,
case INPUT_EVENT_KIND_BTN:
if (evt->u.btn->down) {
s->mouse_buttons |= bmap[evt->u.btn->button];
if (evt->u.btn->button == INPUT_BUTTON_WHEEL_UP) {
if (evt->u.btn->button == INPUT_BUTTON_WHEELUP) {
s->mouse_dz--;
} else if (evt->u.btn->button == INPUT_BUTTON_WHEEL_DOWN) {
} else if (evt->u.btn->button == INPUT_BUTTON_WHEELDOWN) {
s->mouse_dz++;
}
} else {

View File

@@ -143,8 +143,8 @@ static const unsigned int keymap_button[INPUT_BUTTON__MAX] = {
[INPUT_BUTTON_LEFT] = BTN_LEFT,
[INPUT_BUTTON_RIGHT] = BTN_RIGHT,
[INPUT_BUTTON_MIDDLE] = BTN_MIDDLE,
[INPUT_BUTTON_WHEEL_UP] = BTN_GEAR_UP,
[INPUT_BUTTON_WHEEL_DOWN] = BTN_GEAR_DOWN,
[INPUT_BUTTON_WHEELUP] = BTN_GEAR_UP,
[INPUT_BUTTON_WHEELDOWN] = BTN_GEAR_DOWN,
};
static const unsigned int axismap_rel[INPUT_AXIS__MAX] = {

View File

@@ -378,8 +378,6 @@ void graphic_hw_gl_block(QemuConsole *con, bool block);
QemuConsole *qemu_console_lookup_by_index(unsigned int index);
QemuConsole *qemu_console_lookup_by_device(DeviceState *dev, uint32_t head);
QemuConsole *qemu_console_lookup_by_device_name(const char *device_id,
uint32_t head, Error **errp);
bool qemu_console_is_visible(QemuConsole *con);
bool qemu_console_is_graphic(QemuConsole *con);
bool qemu_console_is_fixedsize(QemuConsole *con);

View File

@@ -1375,7 +1375,7 @@ static void hmp_mouse_move(Monitor *mon, const QDict *qdict)
if (dz_str) {
dz = strtol(dz_str, NULL, 0);
if (dz != 0) {
button = (dz > 0) ? INPUT_BUTTON_WHEEL_UP : INPUT_BUTTON_WHEEL_DOWN;
button = (dz > 0) ? INPUT_BUTTON_WHEELUP : INPUT_BUTTON_WHEELDOWN;
qemu_input_queue_btn(NULL, button, true);
qemu_input_event_sync();
qemu_input_queue_btn(NULL, button, false);

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -3743,9 +3743,12 @@
# Button of a pointer input device (mouse, tablet).
#
# Since: 2.0
#
# Note that the spelling of these values may change when the
# x-input-send-event is promoted out of experimental status.
##
{ 'enum' : 'InputButton',
'data' : [ 'left', 'middle', 'right', 'wheel-up', 'wheel-down' ] }
'data' : [ 'Left', 'Middle', 'Right', 'WheelUp', 'WheelDown' ] }
##
# @InputAxis
@@ -3753,9 +3756,12 @@
# Position axis of a pointer input device (mouse, tablet).
#
# Since: 2.0
#
# Note that the spelling of these values may change when the
# x-input-send-event is promoted out of experimental status.
##
{ 'enum' : 'InputAxis',
'data' : [ 'x', 'y' ] }
'data' : [ 'X', 'Y' ] }
##
# @InputKeyEvent
@@ -3819,34 +3825,38 @@
'abs' : 'InputMoveEvent' } }
##
# @input-send-event
# @x-input-send-event
#
# Send input event(s) to guest.
#
# @device: #optional display device to send event(s) to.
# @head: #optional head to send event(s) to, in case the
# display device supports multiple scanouts.
# @console: #optional console to send event(s) to.
# This parameter can be used to send the input event to
# specific input devices in case (a) multiple input devices
# of the same kind are added to the virtual machine and (b)
# you have configured input routing (see docs/multiseat.txt)
# for those input devices. If input routing is not
# configured this parameter has no effect.
# If @console is missing, only devices that aren't associated
# with a console are admissible.
# If @console is specified, it must exist, and both devices
# associated with that console and devices not associated with a
# console are admissible, but the former take precedence.
#
# @events: List of InputEvent union.
#
# Returns: Nothing on success.
#
# The @display and @head parameters can be used to send the input
# event to specific input devices in case (a) multiple input devices
# of the same kind are added to the virtual machine and (b) you have
# configured input routing (see docs/multiseat.txt) for those input
# devices. The parameters work exactly like the device and head
# properties of input devices. If @device is missing, only devices
# that have no input routing config are admissible. If @device is
# specified, both input devices with and without input routing config
# are admissible, but devices with input routing config take
# precedence.
# Since: 2.2
#
# Note: this command is experimental, and not a stable API. Things that
# might change before it becomes stable include the spelling of enum
# values for InputButton and InputAxis, and the notion of how to designate
# which console will receive the event.
#
# Since: 2.6
##
{ 'command': 'input-send-event',
'data': { '*device': 'str',
'*head' : 'int',
'events' : [ 'InputEvent' ] } }
{ 'command': 'x-input-send-event',
'data': { '*console':'int', 'events': [ 'InputEvent' ] } }
##
# @NumaOptions

View File

@@ -4658,22 +4658,21 @@ Example:
EQMP
{
.name = "input-send-event",
.name = "x-input-send-event",
.args_type = "console:i?,events:q",
.mhandler.cmd_new = qmp_marshal_input_send_event,
.mhandler.cmd_new = qmp_marshal_x_input_send_event,
},
SQMP
@input-send-event
@x-input-send-event
-----------------
Send input event to guest.
Arguments:
- "device": display device (json-string, optional)
- "head": display head (json-int, optional)
- "events": list of input events
- "console": console index. (json-int, optional)
- "events": list of input events.
The consoles are visible in the qom tree, under
/backend/console[$index]. They have a device link and head property, so
@@ -4685,24 +4684,24 @@ Example (1):
Press left mouse button.
-> { "execute": "input-send-event",
"arguments": { "device": "video0",
-> { "execute": "x-input-send-event",
"arguments": { "console": 0,
"events": [ { "type": "btn",
"data" : { "down": true, "button": "left" } } ] } }
"data" : { "down": true, "button": "Left" } } ] } }
<- { "return": {} }
-> { "execute": "input-send-event",
"arguments": { "device": "video0",
-> { "execute": "x-input-send-event",
"arguments": { "console": 0,
"events": [ { "type": "btn",
"data" : { "down": false, "button": "left" } } ] } }
"data" : { "down": false, "button": "Left" } } ] } }
<- { "return": {} }
Example (2):
Press ctrl-alt-del.
-> { "execute": "input-send-event",
"arguments": { "events": [
-> { "execute": "x-input-send-event",
"arguments": { "console": 0, "events": [
{ "type": "key", "data" : { "down": true,
"key": {"type": "qcode", "data": "ctrl" } } },
{ "type": "key", "data" : { "down": true,
@@ -4715,10 +4714,10 @@ Example (3):
Move mouse pointer to absolute coordinates (20000, 400).
-> { "execute": "input-send-event" ,
"arguments": { "events": [
{ "type": "abs", "data" : { "axis": "x", "value" : 20000 } },
{ "type": "abs", "data" : { "axis": "y", "value" : 400 } } ] } }
-> { "execute": "x-input-send-event" ,
"arguments": { "console": 0, "events": [
{ "type": "abs", "data" : { "axis": "X", "value" : 20000 } },
{ "type": "abs", "data" : { "axis": "Y", "value" : 400 } } ] } }
<- { "return": {} }
EQMP

View File

@@ -66,6 +66,8 @@ case_whitelist = [
'CpuInfoBase', # CPU, visible through query-cpu
'CpuInfoMIPS', # PC, visible through query-cpu
'CpuInfoTricore', # PC, visible through query-cpu
'InputAxis', # TODO: drop when x-input-send-event is fixed
'InputButton', # TODO: drop when x-input-send-event is fixed
'QapiErrorClass', # all members, visible through errors
'UuidInfo', # UUID, visible through query-uuid
'X86CPURegister32', # all members, visible indirectly through qom-get

View File

@@ -739,8 +739,8 @@ QemuCocoaView *cocoaView;
[INPUT_BUTTON_LEFT] = MOUSE_EVENT_LBUTTON,
[INPUT_BUTTON_MIDDLE] = MOUSE_EVENT_MBUTTON,
[INPUT_BUTTON_RIGHT] = MOUSE_EVENT_RBUTTON,
[INPUT_BUTTON_WHEEL_UP] = MOUSE_EVENT_WHEELUP,
[INPUT_BUTTON_WHEEL_DOWN] = MOUSE_EVENT_WHEELDN,
[INPUT_BUTTON_WHEELUP] = MOUSE_EVENT_WHEELUP,
[INPUT_BUTTON_WHEELDOWN] = MOUSE_EVENT_WHEELDN,
};
qemu_input_update_buttons(dcl->con, bmap, last_buttons, buttons);
last_buttons = buttons;

View File

@@ -1790,29 +1790,6 @@ QemuConsole *qemu_console_lookup_by_device(DeviceState *dev, uint32_t head)
return NULL;
}
QemuConsole *qemu_console_lookup_by_device_name(const char *device_id,
uint32_t head, Error **errp)
{
DeviceState *dev;
QemuConsole *con;
dev = qdev_find_recursive(sysbus_get_default(), device_id);
if (dev == NULL) {
error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND,
"Device '%s' not found", device_id);
return NULL;
}
con = qemu_console_lookup_by_device(dev, head);
if (con == NULL) {
error_setg(errp, "Device %s (head %d) is not bound to a QemuConsole",
device_id, head);
return NULL;
}
return con;
}
bool qemu_console_is_visible(QemuConsole *con)
{
return (con == active_console) || (con->dcls > 0);

View File

@@ -966,9 +966,9 @@ static gboolean gd_scroll_event(GtkWidget *widget, GdkEventScroll *scroll,
InputButton btn;
if (scroll->direction == GDK_SCROLL_UP) {
btn = INPUT_BUTTON_WHEEL_UP;
btn = INPUT_BUTTON_WHEELUP;
} else if (scroll->direction == GDK_SCROLL_DOWN) {
btn = INPUT_BUTTON_WHEEL_DOWN;
btn = INPUT_BUTTON_WHEELDOWN;
} else {
return TRUE;
}

View File

@@ -158,7 +158,7 @@ static void legacy_mouse_event(DeviceState *dev, QemuConsole *src,
} else {
s->buttons &= ~bmap[evt->u.btn->button];
}
if (evt->u.btn->down && evt->u.btn->button == INPUT_BUTTON_WHEEL_UP) {
if (evt->u.btn->down && evt->u.btn->button == INPUT_BUTTON_WHEELUP) {
s->qemu_put_mouse_event(s->qemu_put_mouse_event_opaque,
s->axis[INPUT_AXIS_X],
s->axis[INPUT_AXIS_Y],
@@ -166,7 +166,7 @@ static void legacy_mouse_event(DeviceState *dev, QemuConsole *src,
s->buttons);
}
if (evt->u.btn->down &&
evt->u.btn->button == INPUT_BUTTON_WHEEL_DOWN) {
evt->u.btn->button == INPUT_BUTTON_WHEELDOWN) {
s->qemu_put_mouse_event(s->qemu_put_mouse_event_opaque,
s->axis[INPUT_AXIS_X],
s->axis[INPUT_AXIS_Y],

View File

@@ -82,12 +82,19 @@ void qemu_input_handler_bind(QemuInputHandlerState *s,
const char *device_id, int head,
Error **errp)
{
DeviceState *dev;
QemuConsole *con;
Error *err = NULL;
con = qemu_console_lookup_by_device_name(device_id, head, &err);
if (err) {
error_propagate(errp, err);
dev = qdev_find_recursive(sysbus_get_default(), device_id);
if (dev == NULL) {
error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND,
"Device '%s' not found", device_id);
return;
}
con = qemu_console_lookup_by_device(dev, head);
if (con == NULL) {
error_setg(errp, "Device %s is not bound to a QemuConsole", device_id);
return;
}
@@ -119,22 +126,17 @@ qemu_input_find_handler(uint32_t mask, QemuConsole *con)
return NULL;
}
void qmp_input_send_event(bool has_device, const char *device,
bool has_head, int64_t head,
InputEventList *events, Error **errp)
void qmp_x_input_send_event(bool has_console, int64_t console,
InputEventList *events, Error **errp)
{
InputEventList *e;
QemuConsole *con;
Error *err = NULL;
con = NULL;
if (has_device) {
if (!has_head) {
head = 0;
}
con = qemu_console_lookup_by_device_name(device, head, &err);
if (err) {
error_propagate(errp, err);
if (has_console) {
con = qemu_console_lookup_by_index(console);
if (!con) {
error_setg(errp, "console %" PRId64 " not found", console);
return;
}
}

View File

@@ -475,8 +475,8 @@ static void sdl_send_mouse_event(int dx, int dy, int x, int y, int state)
[INPUT_BUTTON_LEFT] = SDL_BUTTON(SDL_BUTTON_LEFT),
[INPUT_BUTTON_MIDDLE] = SDL_BUTTON(SDL_BUTTON_MIDDLE),
[INPUT_BUTTON_RIGHT] = SDL_BUTTON(SDL_BUTTON_RIGHT),
[INPUT_BUTTON_WHEEL_UP] = SDL_BUTTON(SDL_BUTTON_WHEELUP),
[INPUT_BUTTON_WHEEL_DOWN] = SDL_BUTTON(SDL_BUTTON_WHEELDOWN),
[INPUT_BUTTON_WHEELUP] = SDL_BUTTON(SDL_BUTTON_WHEELUP),
[INPUT_BUTTON_WHEELDOWN] = SDL_BUTTON(SDL_BUTTON_WHEELDOWN),
};
static uint32_t prev_state;

View File

@@ -509,9 +509,9 @@ static void handle_mousewheel(SDL_Event *ev)
InputButton btn;
if (wev->y > 0) {
btn = INPUT_BUTTON_WHEEL_UP;
btn = INPUT_BUTTON_WHEELUP;
} else if (wev->y < 0) {
btn = INPUT_BUTTON_WHEEL_DOWN;
btn = INPUT_BUTTON_WHEELDOWN;
} else {
return;
}

View File

@@ -108,8 +108,8 @@ static void spice_update_buttons(QemuSpicePointer *pointer,
[INPUT_BUTTON_LEFT] = 0x01,
[INPUT_BUTTON_MIDDLE] = 0x04,
[INPUT_BUTTON_RIGHT] = 0x02,
[INPUT_BUTTON_WHEEL_UP] = 0x10,
[INPUT_BUTTON_WHEEL_DOWN] = 0x20,
[INPUT_BUTTON_WHEELUP] = 0x10,
[INPUT_BUTTON_WHEELDOWN] = 0x20,
};
if (wheel < 0) {

View File

@@ -1593,8 +1593,8 @@ static void pointer_event(VncState *vs, int button_mask, int x, int y)
[INPUT_BUTTON_LEFT] = 0x01,
[INPUT_BUTTON_MIDDLE] = 0x02,
[INPUT_BUTTON_RIGHT] = 0x04,
[INPUT_BUTTON_WHEEL_UP] = 0x08,
[INPUT_BUTTON_WHEEL_DOWN] = 0x10,
[INPUT_BUTTON_WHEELUP] = 0x08,
[INPUT_BUTTON_WHEELDOWN] = 0x10,
};
QemuConsole *con = vs->vd->dcl.con;
int width = pixman_image_get_width(vs->vd->server);
@@ -3732,12 +3732,19 @@ void vnc_display_open(const char *id, Error **errp)
device_id = qemu_opt_get(opts, "display");
if (device_id) {
DeviceState *dev;
int head = qemu_opt_get_number(opts, "head", 0);
Error *err = NULL;
con = qemu_console_lookup_by_device_name(device_id, head, &err);
if (err) {
error_propagate(errp, err);
dev = qdev_find_recursive(sysbus_get_default(), device_id);
if (dev == NULL) {
error_setg(errp, "Device '%s' not found", device_id);
goto fail;
}
con = qemu_console_lookup_by_device(dev, head);
if (con == NULL) {
error_setg(errp, "Device %s is not bound to a QemuConsole",
device_id);
goto fail;
}
} else {