From nobody Tue Dec 16 05:37:35 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1520983080163593.7858506944966; Tue, 13 Mar 2018 16:18:00 -0700 (PDT) Received: from localhost ([::1]:43442 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evtB5-0004lZ-7e for importer@patchew.org; Tue, 13 Mar 2018 19:17:55 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58511) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evsiY-0006E4-Kd for qemu-devel@nongnu.org; Tue, 13 Mar 2018 18:48:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1evsiX-00041v-M2 for qemu-devel@nongnu.org; Tue, 13 Mar 2018 18:48:26 -0400 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:33099) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1evsiX-00041M-Fe for qemu-devel@nongnu.org; Tue, 13 Mar 2018 18:48:25 -0400 Received: by mail-wm0-x242.google.com with SMTP id s206so16180520wme.0 for ; Tue, 13 Mar 2018 15:48:25 -0700 (PDT) Received: from donizetti.lan (94-36-191-219.adsl-ull.clienti.tiscali.it. [94.36.191.219]) by smtp.gmail.com with ESMTPSA id x107sm1557951wrb.97.2018.03.13.15.48.23 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 13 Mar 2018 15:48:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=sUaSHlyaLBBpkK2BkO2inVTuimuRwxYimBfjFsFjvok=; b=rrfubew7IgyCA6orNxNx5ycMU4DCpjIL99CtUxBY2u6+IU5wgzd76UzuAU0ZnxJQ4T H9puWq2fYbcAjlHlWPhfiYsmu8hoVyofe3w2D1LsdJhbGnu9daWPf+aJML4+N79EBHPb aKY4b6ttKYHF16J/46DHtLKc/HdaH+70rpe0dEPafF1kbQa6JYVHpHIInsjOnPHrr8lQ GSYOFFQ+vEZqH9TF2KZhEGsS30nYi9n+xNQwl/IW2NqGCQd6JPK2Xqe8oZgrA1dm1JOL F7HHri5VeDXlZ5y54GLyFZdDJ09SMbj2kvMgb8OWL9kosRVWSQppaQKk1gUgMXICsENb iHqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=sUaSHlyaLBBpkK2BkO2inVTuimuRwxYimBfjFsFjvok=; b=Nfjyl/3n6SGYUv5ujDmrQPa/Abb5stsDTebfEZBuXN9KPDWEyeO9J0nmrCt2K5wD6v kSZd8V0IdClKnqFz0w0LZm2ZRy1C+bLUN5oHuwvfaiZWf4imtb855xUAWY276f/5FbXp bPKWwCkek2caxRaGZAmIspxaOUV86t6saCWhap5OTaCf17MXcijEl19OdVBj13OfFsUQ hkmvjqvkdI/WORXUOtvQw8z8zjT45m2kXhWWQPpKWCgI2QTBrNLS8xqdK3ql9ZEuhlE8 kJiYHrpxmd5N+EEGPD+gTAB0kTfjXPX7SaSsUYRp5RFlV/9SeyVPP+4KGSBIciRH96lw HEaw== X-Gm-Message-State: AElRT7E7GLxtEz4ARBNCJGrVWhyZvevPyjkk+kX9nepxA/eXotktisTG nJv7YcusNiusvY+L8D9zEqpJf1Yj X-Google-Smtp-Source: AG47ELu2r1hbDbmJu+wgJDmEECe+h3ELQLVcOM9Te3Fx8P6H+RfuiV0+rkv6JbYhOsAYTfKFr7qiCQ== X-Received: by 10.28.144.82 with SMTP id s79mr1944524wmd.4.1520981304024; Tue, 13 Mar 2018 15:48:24 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 13 Mar 2018 23:47:01 +0100 Message-Id: <20180313224719.4954-52-pbonzini@redhat.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180313224719.4954-1-pbonzini@redhat.com> References: <20180313224719.4954-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::242 Subject: [Qemu-devel] [PULL 51/69] hw/i386/pc: Factor out the superio code X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 From: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20180308223946.26784-26-f4bug@amsat.org> Signed-off-by: Paolo Bonzini --- hw/i386/pc.c | 72 ++++++++++++++++++++++++++++++++++----------------------= ---- 1 file changed, 41 insertions(+), 31 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 853a01d791..d36bac8c89 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1517,6 +1517,44 @@ static const MemoryRegionOps ioportF0_io_ops =3D { }, }; =20 +static void pc_superio_init(ISABus *isa_bus, bool create_fdctrl, bool no_v= mport) +{ + int i; + DriveInfo *fd[MAX_FD]; + qemu_irq *a20_line; + ISADevice *i8042, *port92, *vmmouse; + + serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS); + parallel_hds_isa_init(isa_bus, MAX_PARALLEL_PORTS); + + for (i =3D 0; i < MAX_FD; i++) { + fd[i] =3D drive_get(IF_FLOPPY, 0, i); + create_fdctrl |=3D !!fd[i]; + } + if (create_fdctrl) { + fdctrl_init_isa(isa_bus, fd); + } + + i8042 =3D isa_create_simple(isa_bus, "i8042"); + if (!no_vmport) { + vmport_init(isa_bus); + vmmouse =3D isa_try_create(isa_bus, "vmmouse"); + } else { + vmmouse =3D NULL; + } + if (vmmouse) { + DeviceState *dev =3D DEVICE(vmmouse); + qdev_prop_set_ptr(dev, "ps2_mouse", i8042); + qdev_init_nofail(dev); + } + port92 =3D isa_create_simple(isa_bus, "port92"); + + a20_line =3D qemu_allocate_irqs(handle_a20_line_change, first_cpu, 2); + i8042_setup_a20_line(i8042, a20_line[0]); + port92_init(port92, a20_line[1]); + g_free(a20_line); +} + void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi, ISADevice **rtc_state, bool create_fdctrl, @@ -1525,13 +1563,11 @@ void pc_basic_device_init(ISABus *isa_bus, qemu_irq= *gsi, uint32_t hpet_irqs) { int i; - DriveInfo *fd[MAX_FD]; DeviceState *hpet =3D NULL; int pit_isa_irq =3D 0; qemu_irq pit_alt_irq =3D NULL; qemu_irq rtc_irq =3D NULL; - qemu_irq *a20_line; - ISADevice *i8042, *port92, *vmmouse, *pit =3D NULL; + ISADevice *pit =3D NULL; MemoryRegion *ioport80_io =3D g_new(MemoryRegion, 1); MemoryRegion *ioportF0_io =3D g_new(MemoryRegion, 1); =20 @@ -1588,36 +1624,10 @@ void pc_basic_device_init(ISABus *isa_bus, qemu_irq= *gsi, pcspk_init(isa_bus, pit); } =20 - serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS); - parallel_hds_isa_init(isa_bus, MAX_PARALLEL_PORTS); - - a20_line =3D qemu_allocate_irqs(handle_a20_line_change, first_cpu, 2); - i8042 =3D isa_create_simple(isa_bus, "i8042"); - i8042_setup_a20_line(i8042, a20_line[0]); - if (!no_vmport) { - vmport_init(isa_bus); - vmmouse =3D isa_try_create(isa_bus, "vmmouse"); - } else { - vmmouse =3D NULL; - } - if (vmmouse) { - DeviceState *dev =3D DEVICE(vmmouse); - qdev_prop_set_ptr(dev, "ps2_mouse", i8042); - qdev_init_nofail(dev); - } - port92 =3D isa_create_simple(isa_bus, "port92"); - port92_init(port92, a20_line[1]); - g_free(a20_line); - i8257_dma_init(isa_bus, 0); =20 - for(i =3D 0; i < MAX_FD; i++) { - fd[i] =3D drive_get(IF_FLOPPY, 0, i); - create_fdctrl |=3D !!fd[i]; - } - if (create_fdctrl) { - fdctrl_init_isa(isa_bus, fd); - } + /* Super I/O */ + pc_superio_init(isa_bus, create_fdctrl, no_vmport); } =20 void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus) --=20 2.14.3