From patchwork Sun Jan 14 12:39:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernhard Beschow X-Patchwork-Id: 1886444 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=ni5bSqIs; 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 4TCZg74WVfz1yPf for ; Sun, 14 Jan 2024 23:42:43 +1100 (AEDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rOzm3-0003Ef-JF; Sun, 14 Jan 2024 07:39:35 -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 1rOzlz-0003DD-E5; Sun, 14 Jan 2024 07:39:32 -0500 Received: from mail-ed1-x529.google.com ([2a00:1450:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rOzlx-0001Xn-1r; Sun, 14 Jan 2024 07:39:31 -0500 Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-558ac3407eeso3517281a12.0; Sun, 14 Jan 2024 04:39:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705235963; x=1705840763; 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=bi0QFRMOuxNLqiWfSHGGakhzmTwuEHjIDpY06FXf4ag=; b=ni5bSqIsRRW35YY1vUKOx1cwEuSIodR1YPziASit8w+rtF66J6ip+KqX0Vf+f1nT19 DnuU7oj2sAcAdRxgqmmc40wpty01QnmVxS0f0AqqguMMiuLEG6gTQDLbX0I2QSvGv9JH 1v2umuUT8XX9QHeCRm8sEK2RdBwKPVUgWeFBjrS7GRhwLGXOqU+45g0/oSTTk5wiL/By A4pWxXbdFxScevGI+KKF2yCnIQa3Px9+H70V+LxDl4uogdErzZkdg3X35N83JrknFz4X y+8VXslBXhpOh5K+VhZ6CqiQlpl2QabOOSFJ9LsWEQUOMaJ1A/LQZiRj8qKzXIrK2fkj gvyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705235963; x=1705840763; 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=bi0QFRMOuxNLqiWfSHGGakhzmTwuEHjIDpY06FXf4ag=; b=Sx57cI8nemGWyvHtfF61DnDnrU+QN+lJ9iQXsuyM/lT9FwofBMFAFD/w8i8O+QJ0Yv mpf4YH5+p1L5RimuR6X7zAiXvYsUbEP7NhKNH9jrRtpC5qgZJ8Pd8CId6CFUoqiFEl55 hwBruz1YK6PVeVUSE5/wOQHBIQF9mdT52MvBNXNJ66U1Kmo5CIOCcbbaMCvWBmMXpm1G 2S875xtpLW62n2S7KrgWcW8mmvafnX1U6ETAaWzTl7UsnjAXHuGd5RYbU25M+N9HmFWk iZrR3sNf+yGONB4Eqrjcj3hlNPgFRt5sIdz+H1D1eIy19tQ5eKzSBzzBKLCP3NPj5W3T g1xQ== X-Gm-Message-State: AOJu0YxhrpTALzSty//zT4EklJIvwEsf7B966kQBYV3xCA8HbFvR48Fq BDXP54txthc0n9dwgiFRT8H52LLvT8I= X-Google-Smtp-Source: AGHT+IEg/dBC6qmB33zgV7qosoi3Mk5k13qBj5SNxNoOwdYwUTM+irOfgorXGz3KshcT9rwG+fCWZQ== X-Received: by 2002:a17:906:d18f:b0:a2b:cf2b:504e with SMTP id c15-20020a170906d18f00b00a2bcf2b504emr1954916ejz.147.1705235962478; Sun, 14 Jan 2024 04:39:22 -0800 (PST) Received: from archlinux.. (dynamic-077-183-249-018.77.183.pool.telefonica.de. [77.183.249.18]) by smtp.gmail.com with ESMTPSA id s2-20020a170906354200b00a293c6cc184sm4023734eja.24.2024.01.14.04.39.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jan 2024 04:39:21 -0800 (PST) From: Bernhard Beschow To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-block@nongnu.org, Sergio Lopez , =?utf-8?b?RnLDqWTDqXJpYyBCYXJyYXQ=?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Richard Henderson , qemu-ppc@nongnu.org, Artyom Tarasenko , Fabiano Rosas , =?utf-8?q?Herv=C3=A9_Poussineau?= , =?utf-8?q?Philipp?= =?utf-8?q?e_Mathieu-Daud=C3=A9?= , Hanna Reitz , Jiaxun Yang , John Snow , Thomas Huth , Peter Xu , Paolo Bonzini , Mark Cave-Ayland , Leonardo Bras , "Michael S. Tsirkin" , Eduardo Habkost , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , Marcel Apfelbaum , BALATON Zoltan , Aleksandar Rikalo , Kevin Wolf , David Hildenbrand , Bernhard Beschow Subject: [PATCH v5 00/11] hw/isa/vt82c686: Implement relocation and toggling of SuperI/O functions Date: Sun, 14 Jan 2024 13:39:00 +0100 Message-ID: <20240114123911.4877-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::529; envelope-from=shentey@gmail.com; helo=mail-ed1-x529.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-3 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 4-6 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 7-9 implement toggling and relocation for types TYPE_ISA_FDC, TYPE_ISA_PARALLEL and TYPE_ISA_SERIAL. Patch 10 prepares the pegasos2 machine which would end up with all SuperI/O functions disabled if no -bios argument is given. Patch 11 finally implements the main feature which now relies on firmware to configure the SuperI/O functions accordingly (except for pegasos2). v5: * Use cpu_physical_memory_write() in pegasos2 (Zoltan) * Use an int as for loop variable (Zoltan) v4: * Drop incomplete SuperI/O vmstate handling (Zoltan) v3: * Rework various commit messages (Zoltan) * Drop patch "hw/char/serial: Free struct SerialState from MemoryRegion" (Zoltan) * Generalize wording in migration.rst to include portio_list API (Zoltan) v2: * Improve commit messages (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 (11): hw/block/fdc-isa: Move portio_list from FDCtrl to FDCtrlISABus hw/block/fdc-sysbus: Move iomem from FDCtrl to FDCtrlSysBus hw/char/parallel: Move portio_list from ParallelState to ISAParallelState 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 enabling/disabling for TYPE_ISA_FDC hw/char/serial-isa: Implement relocation and enabling/disabling for TYPE_ISA_SERIAL hw/char/parallel-isa: Implement relocation and enabling/disabling 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 | 6 ++-- 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 | 2 ++ 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 | 14 ++++++++ hw/isa/vt82c686.c | 65 ++++++++++++++++++++++++++++------ hw/ppc/pegasos2.c | 12 +++++++ system/ioport.c | 41 +++++++++++++++++---- 15 files changed, 168 insertions(+), 30 deletions(-)