Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
hw/usb/dev-serial.c | 28 ++++++++++++++--------------
hw/usb/trace-events | 8 ++++++++
2 files changed, 22 insertions(+), 14 deletions(-)
diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c
index 77ce89d38b..abc316c7bf 100644
--- a/hw/usb/dev-serial.c
+++ b/hw/usb/dev-serial.c
@@ -20,15 +20,8 @@
#include "chardev/char-serial.h"
#include "chardev/char-fe.h"
#include "qom/object.h"
+#include "trace.h"
-//#define DEBUG_Serial
-
-#ifdef DEBUG_Serial
-#define DPRINTF(fmt, ...) \
-do { printf("usb-serial: " fmt , ## __VA_ARGS__); } while (0)
-#else
-#define DPRINTF(fmt, ...) do {} while(0)
-#endif
#define RECV_BUF (512 - (2 * 8))
@@ -205,8 +198,9 @@ static void usb_serial_reset(USBSerialState *s)
static void usb_serial_handle_reset(USBDevice *dev)
{
USBSerialState *s = USB_SERIAL(dev);
+ USBBus *bus = usb_bus_from_device(dev);
- DPRINTF("Reset\n");
+ trace_usb_serial_reset(bus->busnr, dev->addr);
usb_serial_reset(s);
/* TODO: Reset char device, send BREAK? */
@@ -244,9 +238,11 @@ static void usb_serial_handle_control(USBDevice *dev, USBPacket *p,
int length, uint8_t *data)
{
USBSerialState *s = USB_SERIAL(dev);
+ USBBus *bus = usb_bus_from_device(dev);
int ret;
- DPRINTF("got control %x, value %x\n", request, value);
+ trace_usb_serial_handle_control(bus->busnr, dev->addr, request, value);
+
ret = usb_desc_handle_control(dev, p, request, value, index, length, data);
if (ret >= 0) {
return;
@@ -326,7 +322,8 @@ static void usb_serial_handle_control(USBDevice *dev, USBPacket *p,
s->params.parity = 'E';
break;
default:
- DPRINTF("unsupported parity %d\n", value & FTDI_PARITY);
+ trace_usb_serial_unsupported_parity(bus->busnr, dev->addr,
+ value & FTDI_PARITY);
goto fail;
}
@@ -338,7 +335,8 @@ static void usb_serial_handle_control(USBDevice *dev, USBPacket *p,
s->params.stop_bits = 2;
break;
default:
- DPRINTF("unsupported stop bits %d\n", value & FTDI_STOP);
+ trace_usb_serial_unsupported_stopbits(bus->busnr, dev->addr,
+ value & FTDI_STOP);
goto fail;
}
@@ -367,7 +365,8 @@ static void usb_serial_handle_control(USBDevice *dev, USBPacket *p,
break;
default:
fail:
- DPRINTF("got unsupported/bogus control %x, value %x\n", request, value);
+ trace_usb_serial_unsupported_control(bus->busnr, dev->addr, request,
+ value);
p->status = USB_RET_STALL;
break;
}
@@ -431,6 +430,7 @@ static void usb_serial_token_in(USBSerialState *s, USBPacket *p)
static void usb_serial_handle_data(USBDevice *dev, USBPacket *p)
{
USBSerialState *s = USB_SERIAL(dev);
+ USBBus *bus = usb_bus_from_device(dev);
uint8_t devep = p->ep->nr;
struct iovec *iov;
int i;
@@ -459,7 +459,7 @@ static void usb_serial_handle_data(USBDevice *dev, USBPacket *p)
break;
default:
- DPRINTF("Bad token\n");
+ trace_usb_serial_bad_token(bus->busnr, dev->addr);
fail:
p->status = USB_RET_STALL;
break;
diff --git a/hw/usb/trace-events b/hw/usb/trace-events
index 72e4298780..e5871cbbbc 100644
--- a/hw/usb/trace-events
+++ b/hw/usb/trace-events
@@ -320,3 +320,11 @@ usb_host_parse_interface(int bus, int addr, int num, int alt, int active) "dev %
usb_host_parse_endpoint(int bus, int addr, int ep, const char *dir, const char *type, int active) "dev %d:%d, ep %d, %s, %s, active %d"
usb_host_parse_error(int bus, int addr, const char *errmsg) "dev %d:%d, msg %s"
usb_host_remote_wakeup_removed(int bus, int addr) "dev %d:%d"
+
+# dev-serial.c
+usb_serial_reset(int bus, int addr) "dev %d:%d reset"
+usb_serial_handle_control(int bus, int addr, int request, int value) "dev %d:%d got control 0x%x, value 0x%x"
+usb_serial_unsupported_parity(int bus, int addr, int value) "dev %d:%d unsupported parity %d"
+usb_serial_unsupported_stopbits(int bus, int addr, int value) "dev %d:%d unsupported stop bits %d"
+usb_serial_unsupported_control(int bus, int addr, int request, int value) "dev %d:%d got unsupported/bogus control 0x%x, value 0x%x"
+usb_serial_bad_token(int bus, int addr) "dev %d:%d bad token"
--
2.20.1
Mark Cave-Ayland, le lun. 26 oct. 2020 08:33:55 +0000, a ecrit:
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
> ---
> hw/usb/dev-serial.c | 28 ++++++++++++++--------------
> hw/usb/trace-events | 8 ++++++++
> 2 files changed, 22 insertions(+), 14 deletions(-)
>
> diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c
> index 77ce89d38b..abc316c7bf 100644
> --- a/hw/usb/dev-serial.c
> +++ b/hw/usb/dev-serial.c
> @@ -20,15 +20,8 @@
> #include "chardev/char-serial.h"
> #include "chardev/char-fe.h"
> #include "qom/object.h"
> +#include "trace.h"
>
> -//#define DEBUG_Serial
> -
> -#ifdef DEBUG_Serial
> -#define DPRINTF(fmt, ...) \
> -do { printf("usb-serial: " fmt , ## __VA_ARGS__); } while (0)
> -#else
> -#define DPRINTF(fmt, ...) do {} while(0)
> -#endif
>
> #define RECV_BUF (512 - (2 * 8))
>
> @@ -205,8 +198,9 @@ static void usb_serial_reset(USBSerialState *s)
> static void usb_serial_handle_reset(USBDevice *dev)
> {
> USBSerialState *s = USB_SERIAL(dev);
> + USBBus *bus = usb_bus_from_device(dev);
>
> - DPRINTF("Reset\n");
> + trace_usb_serial_reset(bus->busnr, dev->addr);
>
> usb_serial_reset(s);
> /* TODO: Reset char device, send BREAK? */
> @@ -244,9 +238,11 @@ static void usb_serial_handle_control(USBDevice *dev, USBPacket *p,
> int length, uint8_t *data)
> {
> USBSerialState *s = USB_SERIAL(dev);
> + USBBus *bus = usb_bus_from_device(dev);
> int ret;
>
> - DPRINTF("got control %x, value %x\n", request, value);
> + trace_usb_serial_handle_control(bus->busnr, dev->addr, request, value);
> +
> ret = usb_desc_handle_control(dev, p, request, value, index, length, data);
> if (ret >= 0) {
> return;
> @@ -326,7 +322,8 @@ static void usb_serial_handle_control(USBDevice *dev, USBPacket *p,
> s->params.parity = 'E';
> break;
> default:
> - DPRINTF("unsupported parity %d\n", value & FTDI_PARITY);
> + trace_usb_serial_unsupported_parity(bus->busnr, dev->addr,
> + value & FTDI_PARITY);
> goto fail;
> }
>
> @@ -338,7 +335,8 @@ static void usb_serial_handle_control(USBDevice *dev, USBPacket *p,
> s->params.stop_bits = 2;
> break;
> default:
> - DPRINTF("unsupported stop bits %d\n", value & FTDI_STOP);
> + trace_usb_serial_unsupported_stopbits(bus->busnr, dev->addr,
> + value & FTDI_STOP);
> goto fail;
> }
>
> @@ -367,7 +365,8 @@ static void usb_serial_handle_control(USBDevice *dev, USBPacket *p,
> break;
> default:
> fail:
> - DPRINTF("got unsupported/bogus control %x, value %x\n", request, value);
> + trace_usb_serial_unsupported_control(bus->busnr, dev->addr, request,
> + value);
> p->status = USB_RET_STALL;
> break;
> }
> @@ -431,6 +430,7 @@ static void usb_serial_token_in(USBSerialState *s, USBPacket *p)
> static void usb_serial_handle_data(USBDevice *dev, USBPacket *p)
> {
> USBSerialState *s = USB_SERIAL(dev);
> + USBBus *bus = usb_bus_from_device(dev);
> uint8_t devep = p->ep->nr;
> struct iovec *iov;
> int i;
> @@ -459,7 +459,7 @@ static void usb_serial_handle_data(USBDevice *dev, USBPacket *p)
> break;
>
> default:
> - DPRINTF("Bad token\n");
> + trace_usb_serial_bad_token(bus->busnr, dev->addr);
> fail:
> p->status = USB_RET_STALL;
> break;
> diff --git a/hw/usb/trace-events b/hw/usb/trace-events
> index 72e4298780..e5871cbbbc 100644
> --- a/hw/usb/trace-events
> +++ b/hw/usb/trace-events
> @@ -320,3 +320,11 @@ usb_host_parse_interface(int bus, int addr, int num, int alt, int active) "dev %
> usb_host_parse_endpoint(int bus, int addr, int ep, const char *dir, const char *type, int active) "dev %d:%d, ep %d, %s, %s, active %d"
> usb_host_parse_error(int bus, int addr, const char *errmsg) "dev %d:%d, msg %s"
> usb_host_remote_wakeup_removed(int bus, int addr) "dev %d:%d"
> +
> +# dev-serial.c
> +usb_serial_reset(int bus, int addr) "dev %d:%d reset"
> +usb_serial_handle_control(int bus, int addr, int request, int value) "dev %d:%d got control 0x%x, value 0x%x"
> +usb_serial_unsupported_parity(int bus, int addr, int value) "dev %d:%d unsupported parity %d"
> +usb_serial_unsupported_stopbits(int bus, int addr, int value) "dev %d:%d unsupported stop bits %d"
> +usb_serial_unsupported_control(int bus, int addr, int request, int value) "dev %d:%d got unsupported/bogus control 0x%x, value 0x%x"
> +usb_serial_bad_token(int bus, int addr) "dev %d:%d bad token"
> --
> 2.20.1
>
--
Samuel
The nice thing about Windows is - It does not just crash, it displays a
dialog box and lets you press 'OK' first.
(Arno Schaefer's .sig)
On 10/26/20 9:33 AM, Mark Cave-Ayland wrote:
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> ---
> hw/usb/dev-serial.c | 28 ++++++++++++++--------------
> hw/usb/trace-events | 8 ++++++++
> 2 files changed, 22 insertions(+), 14 deletions(-)
>
> diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c
> index 77ce89d38b..abc316c7bf 100644
> --- a/hw/usb/dev-serial.c
> +++ b/hw/usb/dev-serial.c
> @@ -20,15 +20,8 @@
> #include "chardev/char-serial.h"
> #include "chardev/char-fe.h"
> #include "qom/object.h"
> +#include "trace.h"
>
> -//#define DEBUG_Serial
> -
> -#ifdef DEBUG_Serial
> -#define DPRINTF(fmt, ...) \
> -do { printf("usb-serial: " fmt , ## __VA_ARGS__); } while (0)
> -#else
> -#define DPRINTF(fmt, ...) do {} while(0)
> -#endif
>
> #define RECV_BUF (512 - (2 * 8))
>
> @@ -205,8 +198,9 @@ static void usb_serial_reset(USBSerialState *s)
> static void usb_serial_handle_reset(USBDevice *dev)
> {
> USBSerialState *s = USB_SERIAL(dev);
> + USBBus *bus = usb_bus_from_device(dev);
>
> - DPRINTF("Reset\n");
> + trace_usb_serial_reset(bus->busnr, dev->addr);
>
> usb_serial_reset(s);
> /* TODO: Reset char device, send BREAK? */
> @@ -244,9 +238,11 @@ static void usb_serial_handle_control(USBDevice *dev, USBPacket *p,
> int length, uint8_t *data)
> {
> USBSerialState *s = USB_SERIAL(dev);
> + USBBus *bus = usb_bus_from_device(dev);
> int ret;
>
> - DPRINTF("got control %x, value %x\n", request, value);
> + trace_usb_serial_handle_control(bus->busnr, dev->addr, request, value);
> +
> ret = usb_desc_handle_control(dev, p, request, value, index, length, data);
> if (ret >= 0) {
> return;
> @@ -326,7 +322,8 @@ static void usb_serial_handle_control(USBDevice *dev, USBPacket *p,
> s->params.parity = 'E';
> break;
> default:
> - DPRINTF("unsupported parity %d\n", value & FTDI_PARITY);
> + trace_usb_serial_unsupported_parity(bus->busnr, dev->addr,
> + value & FTDI_PARITY);
> goto fail;
> }
>
> @@ -338,7 +335,8 @@ static void usb_serial_handle_control(USBDevice *dev, USBPacket *p,
> s->params.stop_bits = 2;
> break;
> default:
> - DPRINTF("unsupported stop bits %d\n", value & FTDI_STOP);
> + trace_usb_serial_unsupported_stopbits(bus->busnr, dev->addr,
> + value & FTDI_STOP);
> goto fail;
> }
>
> @@ -367,7 +365,8 @@ static void usb_serial_handle_control(USBDevice *dev, USBPacket *p,
> break;
> default:
> fail:
> - DPRINTF("got unsupported/bogus control %x, value %x\n", request, value);
> + trace_usb_serial_unsupported_control(bus->busnr, dev->addr, request,
> + value);
> p->status = USB_RET_STALL;
> break;
> }
> @@ -431,6 +430,7 @@ static void usb_serial_token_in(USBSerialState *s, USBPacket *p)
> static void usb_serial_handle_data(USBDevice *dev, USBPacket *p)
> {
> USBSerialState *s = USB_SERIAL(dev);
> + USBBus *bus = usb_bus_from_device(dev);
> uint8_t devep = p->ep->nr;
> struct iovec *iov;
> int i;
> @@ -459,7 +459,7 @@ static void usb_serial_handle_data(USBDevice *dev, USBPacket *p)
> break;
>
> default:
> - DPRINTF("Bad token\n");
> + trace_usb_serial_bad_token(bus->busnr, dev->addr);
> fail:
> p->status = USB_RET_STALL;
> break;
> diff --git a/hw/usb/trace-events b/hw/usb/trace-events
> index 72e4298780..e5871cbbbc 100644
> --- a/hw/usb/trace-events
> +++ b/hw/usb/trace-events
> @@ -320,3 +320,11 @@ usb_host_parse_interface(int bus, int addr, int num, int alt, int active) "dev %
> usb_host_parse_endpoint(int bus, int addr, int ep, const char *dir, const char *type, int active) "dev %d:%d, ep %d, %s, %s, active %d"
> usb_host_parse_error(int bus, int addr, const char *errmsg) "dev %d:%d, msg %s"
> usb_host_remote_wakeup_removed(int bus, int addr) "dev %d:%d"
> +
> +# dev-serial.c
> +usb_serial_reset(int bus, int addr) "dev %d:%d reset"
> +usb_serial_handle_control(int bus, int addr, int request, int value) "dev %d:%d got control 0x%x, value 0x%x"
> +usb_serial_unsupported_parity(int bus, int addr, int value) "dev %d:%d unsupported parity %d"
> +usb_serial_unsupported_stopbits(int bus, int addr, int value) "dev %d:%d unsupported stop bits %d"
> +usb_serial_unsupported_control(int bus, int addr, int request, int value) "dev %d:%d got unsupported/bogus control 0x%x, value 0x%x"
> +usb_serial_bad_token(int bus, int addr) "dev %d:%d bad token"
In all formats, 'addr' is unsigned -> "%u".
Using %u:
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
© 2016 - 2025 Red Hat, Inc.