Am Dienstag 29 September 2009 11:24:31 schrieb Amit Shah: > -static void hvc_handle_input(struct virtqueue *vq) > +/* The operations for our console. */ > +static struct hv_ops virtio_cons = { > + .get_chars = cons_get_chars, > + .put_chars = cons_put_chars, > + .notifier_add = cons_notifier_add_vio, > + .notifier_del = cons_notifier_del_vio, > + .notifier_hangup = cons_notifier_del_vio, > +}; [...] > +int __init virtio_cons_early_init(int (*put_chars)(u32, const char *, int)) > +{ > + virtio_cons.put_chars = put_chars; > + return hvc_instantiate(0, 0, &virtio_cons); > +} [...] > +static int __devinit virtcons_probe(struct virtio_device *vdev) [...] > - /* Start using the new console output. */ > - virtio_cons.get_chars = get_chars; > - virtio_cons.put_chars = put_chars; Ok, that wont work for systems that use virtio_cons_early_init. The early put_chars method was replaced by the final one, but these hunks changed that behaviour. Something like the following restores the old behaviour: (only tested on s390) Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> If you agree, you can merge this snipped into your big patch. --- drivers/char/virtio_console.c | 3 +++ 1 file changed, 3 insertions(+) Index: linux-2.6/drivers/char/virtio_console.c =================================================================== --- linux-2.6.orig/drivers/char/virtio_console.c +++ linux-2.6/drivers/char/virtio_console.c @@ -590,6 +590,9 @@ int init_port_console(struct virtio_cons pr_err("%s: Could not alloc hvc for virtio console port, ret = %d\n", __func__, ret); port->hvc = NULL; + } else { + /* get rid of early put char variants */ + virtio_cons.put_chars = cons_put_chars; } return ret; } _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization