[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 1/9] Revert "Use the extra stack for 16bit USB and PS2 keyboard/mouse commands."
From: "Luis R. Rodriguez" <mcgrof@xxxxxxxx> Upstream commit 12085439561f44107c7d3bea5a333a90ea987643 Kevin made this change upstream to seabios, this is needed for gcc5. Mark Pryor reported the issue with gcc5 a while ago [0], he however failed to follow up with an explanation as to what this does and why this is needed. Revert "Use the extra stack for 16bit USB and PS2 keyboard/mouse commands." It's not valid to pass a pointer to a stack variable through the stack_hop() call (because the call changes the stack segment). This bug was probably not noticed before because by default (CONFIG_ENTRY_EXTRASTACK) SeaBIOS uses the extra stack on all 16bit entry points, and the internal stack_hop() with that config option is effectively a no-op. This reverts commit d488a7683d90bf8fae7ceb8c3ad9e95fbbd92079. Signed-off-by: Kevin O'Connor <kevin@xxxxxxxxxxxx> [0] http://lkml.kernel.org/r/1444332991-1706-1-git-send-email-pryorm09@xxxxxxxxx Reported-by: Mark Pryor <pryorm09@xxxxxxxxx> Cc: Kevin O'Connor <kevin@xxxxxxxxxxxx> Cc: ian.campbell@xxxxxxxxxx Cc: Jan Beulich <JBeulich@xxxxxxxx> Cc: Mark Pryor <pryorm09@xxxxxxxxx> Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxx> --- src/kbd.c | 6 +++--- src/mouse.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/kbd.c b/src/kbd.c index 33a95a398feb..fbcecc382eff 100644 --- a/src/kbd.c +++ b/src/kbd.c @@ -11,7 +11,7 @@ #include "hw/ps2port.h" // ps2_kbd_command #include "hw/usb-hid.h" // usb_kbd_command #include "output.h" // debug_enter -#include "stacks.h" // stack_hop +#include "stacks.h" // yield #include "string.h" // memset #include "util.h" // kbd_init @@ -117,8 +117,8 @@ static int kbd_command(int command, u8 *param) { if (usb_kbd_active()) - return stack_hop(command, (u32)param, usb_kbd_command); - return stack_hop(command, (u32)param, ps2_kbd_command); + return usb_kbd_command(command, param); + return ps2_kbd_command(command, param); } // read keyboard input diff --git a/src/mouse.c b/src/mouse.c index 92ae9212c849..100255d60cfb 100644 --- a/src/mouse.c +++ b/src/mouse.c @@ -10,7 +10,7 @@ #include "hw/ps2port.h" // ps2_mouse_command #include "hw/usb-hid.h" // usb_mouse_command #include "output.h" // dprintf -#include "stacks.h" // stack_hop +#include "stacks.h" // stack_hop_back #include "util.h" // mouse_init void @@ -27,8 +27,8 @@ static int mouse_command(int command, u8 *param) { if (usb_mouse_active()) - return stack_hop(command, (u32)param, usb_mouse_command); - return stack_hop(command, (u32)param, ps2_mouse_command); + return usb_mouse_command(command, param); + return ps2_mouse_command(command, param); } #define RET_SUCCESS 0x00 -- 2.6.2 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |