On (Tue) Nov 10 2009 [16:57:30], Rusty Russell wrote: > > Rather than assume a single port, add a 'struct ports' with an array > of ports. Currently, there's always only one, but that will change. Hey Rusty, > static void virtcons_apply_config(struct virtio_device *dev) > { > - struct port *port = dev->priv; > + struct ports *ports = dev->priv; > struct winsize ws; > > if (virtio_has_feature(dev, VIRTIO_CONSOLE_F_SIZE)) { > @@ -158,7 +168,9 @@ static void virtcons_apply_config(struct > dev->config->get(dev, > offsetof(struct virtio_console_config, rows), > &ws.ws_row, sizeof(u16)); > - hvc_resize(port->hvc, ws); > + /* This is the pre-multiport style: we use control messages > + * these days which specify the port. So this means port 0. */ > + hvc_resize(ports->port[0].hvc, ws); I've fixed a bug in the latest patches that I have (just on git so far; not sent to lists) -- this function is also called from hvc's notifier_add, so instead of passing vdev here, we can just pass the port and look up the port in the notifier_add_vio() function via get_port_from_vtermno(). > -static struct port *__devinit alloc_port(u32 vtermno) > +static struct ports *__devinit alloc_ports(unsigned int num) This will have to be changed when we add support for hotplug. So instead of doing this, just have a linked list from the start? > { > - struct port *port = kmalloc(sizeof *port, GFP_KERNEL); > + struct ports *ports; > + int i; > > - if (!port) > + ports = kmalloc(sizeof *ports + sizeof(ports->port[0]) * num, > + GFP_KERNEL); > + if (!ports) > return NULL; Other than this, the series is good; I can base my patches on top of these. I guess we can also assign a number to each vdev that gets probed so that sysfs and debugfs entries for ports can be put in their vdev-specific directories, like /sys/class/virtio-console0/vcon0/name etc. Also, if you think the send/receive workqueues are fine and we move to those, they will have to be introduced slightly earlier in this patch series. (I'll send out my patches to the list in a while; some polishing is required still but they're all style issues rather than functionality ones.) Amit _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization