On Thu, Sep 6, 2012 at 10:47 AM, Gerd Hoffmann <kra...@redhat.com> wrote: > On 09/06/12 09:48, Peter Maydell wrote: >> On 6 September 2012 08:42, Gerd Hoffmann <kra...@redhat.com> wrote: >>> @@ -789,6 +790,13 @@ static int serial_isa_initfn(ISADevice *dev) >>> isa->isairq = isa_serial_irq[isa->index]; >>> index++; >>> >>> + if (isa->iobase == 0x3f8) { >>> + s->reason = QEMU_WAKEUP_REASON_GPE_a; >>> + s->wakeup = 1; >>> + } else { >>> + s->reason = QEMU_WAKEUP_REASON_OTHER; >>> + } >>> + >> >> It seems a bit odd that this is done in the ISA serial model >> itself and not by the next level up wiring up some output >> of the ISA serial device to some appropriate input... > > Suggestions how to do that are welcome. Preferably some which don't > break on 'qemu -nodefault -device isa-serial,chardev=foo'.
Add a qdev property? The base address check can't be correct, the serial device could be the only one in the board and wired to wakeup but still use a different iobase. One way could be to check if chr == serial_hds[0] or rather, pass the wakeup reason code from board level based on this check. > > cheers, > Gerd > >