From patchwork Mon Dec 18 18:51:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernhard Beschow X-Patchwork-Id: 1877552 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=SSEfTfZi; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Sv87z12Yvz23yx for ; Tue, 19 Dec 2023 05:52:15 +1100 (AEDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rFIiB-00066n-W2; Mon, 18 Dec 2023 13:51:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rFIi8-00065L-Km; Mon, 18 Dec 2023 13:51:28 -0500 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rFIi6-0008OD-T0; Mon, 18 Dec 2023 13:51:28 -0500 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-40c339d2b88so39001705e9.3; Mon, 18 Dec 2023 10:51:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702925483; x=1703530283; darn=nongnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=PGfR2rUZQH8rvHFF8hE4gA3EaA+C8KFkhf4byw46hXo=; b=SSEfTfZiDT0CbzKZeaFR3xxwaessTisF+RWnYOGza41BKDi0liCz9Wk2sKxXL0xalp ry0FHOPZsmw7tE6CLaTbs2XgiuFe11eWrILzfqtVuOQAsFLGExoU48ufzCC/xf7xb0up xkDL6TYUzviRB1t877D57EuS8DbXXmLe8KPUih5fltWx90wEkY/tEmuUDFE4uFQOwJm8 b4fOLmLbgEfLBGA1YwdWYwJGkoSb6ifPzrHn6Ehx7NDkhk7Dmy7ssvimldRp+ZtSmazx AalD9emhUUQw0gpMZiuW+VklbDyB0B/GvPuqbOm0B7u6UIROSRJ8zSOXn9vKUW+R8HfJ xgeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702925483; x=1703530283; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=PGfR2rUZQH8rvHFF8hE4gA3EaA+C8KFkhf4byw46hXo=; b=MeJjTuiOlLhjHEBRjmr8dGA6c198OweAhS+TL2onBUavmy8trFo1jP97N1fz/Oge7T nKKMmirSlwyBTLjXHFZYBmY3fVfeiuUAY2k+ZW95cd4mU/z5YwHJlxyHWiPosseIcmjc 8BWYR6d4pwZPi3X1Eb2vO8myhfIP3cqx5USGd5N0JAWL1+zRNUO7WKEHvFZkMP4FA9a/ QBva6mWZG2DcL/36muA4cZDYKtrsSAlbAevdWbglvz5kG8faROZlZhcTjIRlpHPHOQbB aUn/dOPPYxcibmhg5r9ZGU9kVo9P8pHqE9h98q2EVYhAAG3/Y1txgIg9yOnC2X7tMh2o KX6w== X-Gm-Message-State: AOJu0Yy93Vbr/Ux4xPVnJCMmyfNGVl20CuJX3ZFpGKS32nGgYrxxVyJd eCQRJfwelZhwoGJigwmqh6XWveSugd4= X-Google-Smtp-Source: AGHT+IHQdd9GtpVjZUBd1dqT7C7WYxxXVGEJjULPWK8SGJN44VeBydO/ZtENahg3kcTpeOzH6iC2Vw== X-Received: by 2002:a05:600c:3b06:b0:40b:2a15:9b30 with SMTP id m6-20020a05600c3b0600b0040b2a159b30mr8576755wms.1.1702925482671; Mon, 18 Dec 2023 10:51:22 -0800 (PST) Received: from Provence.localdomain (dynamic-092-224-039-156.92.224.pool.telefonica.de. [92.224.39.156]) by smtp.gmail.com with ESMTPSA id s7-20020a05600c45c700b0040c45071c18sm35134091wmo.39.2023.12.18.10.51.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 10:51:22 -0800 (PST) From: Bernhard Beschow To: qemu-devel@nongnu.org Cc: Fabiano Rosas , "Michael S. Tsirkin" , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-ppc@nongnu.org, Paolo Bonzini , Leonardo Bras , Kevin Wolf , Peter Xu , David Hildenbrand , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Juan Quintela , John Snow , BALATON Zoltan , Jiaxun Yang , Hanna Reitz , qemu-block@nongnu.org, Bernhard Beschow Subject: [PATCH v2 00/12] hw/isa/vt82c686: Implement relocation and toggling of SuperI/O functions Date: Mon, 18 Dec 2023 19:51:02 +0100 Message-ID: <20231218185114.119736-1-shentey@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=shentey@gmail.com; helo=mail-wm1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org This series implements relocation of the SuperI/O functions of the VIA south bridges which resolves some FIXME's. It is part of my via-apollo-pro-133t branch [1] which is an extension of bringing the VIA south bridges to the PC machine [2]. This branch is able to run some real-world X86 BIOSes in the hope that it allows us to form a better understanding of the real vt82c686b devices. Implementing relocation and toggling of the SuperI/O functions is one step to make these BIOSes run without error messages, so here we go. The series is structured as follows: Patches 1-4 prepare the TYPE_ISA_FDC, TYPE_ISA_PARALLEL and TYPE_ISA_SERIAL to relocate and toggle (enable/disable) themselves without breaking encapsulation of their respective device states. This is achieved by moving the MemoryRegions and PortioLists from the device states into the encapsulating ISA devices since they will be relocated and toggled. Inspired by the memory API patches 5-7 add two convenience functions to the portio_list API to toggle and relocate portio lists. Patch 5 is a preparation for that which removes some redundancies which otherwise had to be dealt with during relocation. Patches 8-10 implement toggling and relocation for types TYPE_ISA_FDC, TYPE_ISA_PARALLEL and TYPE_ISA_SERIAL. Patch 11 prepares the pegasos2 machine which would end up with all SuperI/O functions disabled if no -bios argument is given. Patch 12 finally implements the main feature which now relies on firmware to configure the SuperI/O functions accordingly (except for pegasos2). v2: * Improve commit message (Zoltan) * Split pegasos2 from vt82c686 patch (Zoltan) * Avoid poking into device internals (Zoltan) Testing done: * make check * make check-avocado * Run MorphOS on pegasos2 with and without pegasos2.rom * Run Linux on amigaone * Run real-world BIOSes on via-apollo-pro-133t branch * Start rescue-yl on fuloong2e [1] https://github.com/shentok/qemu/tree/via-apollo-pro-133t [2] https://github.com/shentok/qemu/tree/pc-via Bernhard Beschow (12): hw/block/fdc-isa: Free struct FDCtrl from PortioList hw/block/fdc-sysbus: Free struct FDCtrl from MemoryRegion hw/char/serial: Free struct SerialState from MemoryRegion hw/char/parallel: Free struct ParallelState from PortioList exec/ioport: Resolve redundant .base attribute in struct MemoryRegionPortio exec/ioport: Add portio_list_set_address() exec/ioport: Add portio_list_set_enabled() hw/block/fdc-isa: Implement relocation and toggling for TYPE_ISA_FDC hw/char/serial-isa: Implement relocation and toggling for TYPE_ISA_SERIAL hw/char/parallel-isa: Implement relocation and toggling for TYPE_ISA_PARALLEL hw/ppc/pegasos2: Let pegasos2 machine configure SuperI/O functions hw/isa/vt82c686: Implement relocation and toggling of SuperI/O functions docs/devel/migration.rst | 2 + hw/block/fdc-internal.h | 4 -- include/exec/ioport.h | 4 +- include/hw/block/fdc.h | 3 + include/hw/char/parallel-isa.h | 5 ++ include/hw/char/parallel.h | 2 - include/hw/char/serial.h | 4 +- hw/block/fdc-isa.c | 18 ++++- hw/block/fdc-sysbus.c | 6 +- hw/char/parallel-isa.c | 14 ++++ hw/char/parallel.c | 2 +- hw/char/serial-isa.c | 21 +++++- hw/char/serial-pci-multi.c | 7 +- hw/char/serial-pci.c | 7 +- hw/char/serial.c | 4 +- hw/isa/vt82c686.c | 121 ++++++++++++++++++++++++--------- hw/ppc/pegasos2.c | 15 ++++ system/ioport.c | 41 +++++++++-- 18 files changed, 221 insertions(+), 59 deletions(-)