From patchwork Wed Sep 29 09:28:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534285 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBN771Myz9ssD for ; Wed, 29 Sep 2021 19:46:30 +1000 (AEST) Received: from localhost ([::1]:44038 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVWAV-0000WN-5s for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:46:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44888) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtT-0001ou-AY for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:51 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:33041) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtR-0005jC-MD for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:51 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MaIrN-1mHVer3cvd-00WGFa; Wed, 29 Sep 2021 11:28:45 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 01/20] nubus: add comment indicating reference documents Date: Wed, 29 Sep 2021 11:28:24 +0200 Message-Id: <20210929092843.2686234-2-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:fe1X3G9jb9xFYa04BvNzVbHiIU2YtVenE6Ax2PczgEcfVO+Pjpa w1KN5MmUTvYRQAFRHkDWy1BsVI5Crji6y7cBUTMKaVFGiKXggJAvKaYet55vlntrTCrB8Z3 Ulft5KL2L7Tt4zC28QNZkneytLpYZDXWwarKd1XVmqDg5kMY9s6ieriRk4fG7C3NiH+9eA1 G0O24IvOKW7PP+JLMBD2A== X-UI-Out-Filterresults: notjunk:1;V03:K0:1W1C5T37d6c=:y4ZJXRlV9l+cEnqolRFJn0 8hO3WxKgxgo25E2p1fv5g8fKty+ZLBukDkdT7k44Lsi+AjGgaP+neUhFH7s06o6vQAm3dE1WN 6mjWC5Nioox/HKLH9ceYPmXSQpLHWGfM+YziEu197JtygFe711szSWykRhgUaPdVYVpnsARJL P/LTvAglvC1bPLaKJwVY+zdF9h9mPG5Q2mNExV3tZaOP3p5q2EBLY5BxfxkuXEaBKift1YtP9 il5MBvQoGSQz6oNMxsGJoZ/vjLAKqIqE3rV5pTJqXaTEJpn5dqAQ0VXEtzHVF/m87kihEbJbg 4lpbJSmCRIJgh0LQJITq+Y2BtWYbjg3NlK3/gRQJoWB5BgdZJXdNT7HXUNN0pcqK1pEYvMfLI lB0jukwIzvrtot45h3w6qrGBtDmjEm2qK0cEUOaqTudJ3syv+tnYAc42++5YGVsiSWTwBN+NB R9MY51oVFzE8yHcnNCizywo/Os3on8N5xCFpkkg3JwvQu+swut3NGLqcTLMYWmkDqy4kJKcsV U/YUYetejS2zCayL40fHgqUcOwRU29uJCRApqJILIUOcRIRLTPCwljegL4gOn9V3AW4RLLhD1 BTsgTd7JhQNs71tcebh3ivmmX/EONU5eFHbG7QL2XIMTMXTTLnf8iO4hNodP/JrC7QaF1QQuN phB260TdLSKsmJig6jYk7kgtKbi3sIc55m9yu8nchavigeZjD8ob2WpU8trLe2mtw84z+DLQs U0xpXOFWdTV2u1HDerL6x5+JqjQL774Q4N608A== Received-SPF: none client-ip=212.227.126.187; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Tested-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-2-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- hw/nubus/nubus-bus.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/nubus/nubus-bus.c b/hw/nubus/nubus-bus.c index 5c134523082e..f4410803fffe 100644 --- a/hw/nubus/nubus-bus.c +++ b/hw/nubus/nubus-bus.c @@ -8,6 +8,14 @@ * */ +/* + * References: + * Nubus Specification (TI) + * http://www.bitsavers.org/pdf/ti/nubus/2242825-0001_NuBus_Spec1983.pdf + * + * Designing Cards and Drivers for the Macintosh Family (Apple) + */ + #include "qemu/osdep.h" #include "hw/nubus/nubus.h" #include "qapi/error.h" From patchwork Wed Sep 29 09:28:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534274 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKB1R75fxz9ssD for ; Wed, 29 Sep 2021 19:30:19 +1000 (AEST) Received: from localhost ([::1]:37636 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVVur-0001yf-Nr for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:30:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44984) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtZ-0001vj-9k for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:57 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:59073) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtX-0005nM-Ka for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:57 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MQ67s-1m9ZAD21Ds-00M7mN; Wed, 29 Sep 2021 11:28:45 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 02/20] nubus-device: rename slot_nb variable to slot Date: Wed, 29 Sep 2021 11:28:25 +0200 Message-Id: <20210929092843.2686234-3-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:a/wXUPlb9wghCkcWXuczqgnSGPvDffI1Fx07SBqctcSBisffYMP pI9cTYiH5qWHKaqS7vTSwe8wASOv6Vgtgd/0vIz34BQt/thiSLL1XrVaNSpId47rx+h9Xa0 JpJEE0oKQDHOu8H3KO58c00WSCRSkykY8xuSJ2AsnvrWI6Tm7dHt9U8UTEJW8S5G5LHhMwt PcgPzRgMm1v/hhPTnHEGQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:idcxgy8Hh8w=:Jz1Hw72JUWBADmS0UlKDMn asKIqaJr9/StkwTJlEwSHI261cwO1zB6Qm1R3NCS2nR6fQpI86aCj7lR3D+AqFd+GI7SAOKby kq5gc+MWCuRWqV6L/j95WO/cmNrCDxY6BNU1HlmZo5/eUcBxbGs1EdLfeZ0MbI3UFDaN4IvcV U/v0lKwnnozjgeBLt4348+m+nBb+4l5IL7ZYLxK5gs8CG356cvzV9KpW7V6iQuHq+ANp+2fPX 2YL4fktUwV/GdORo+cmZjpArj1BLWW8fZPSpaMELjRqncPbMRQpEgi7WAvH/Gk129tI0160Ct deFKbxgBdOKxEUWPvVni1CUFTabX+b49YBfaP75vQ49BqCoRSbHT9Xw1kZQCqA3/hFpEn82zo J5Z2Amh/eNLXDLQBcOQkR+O7OBgYAa/QK/En8HckbSEdcxVYbMx3rgamug150raRUVmeMLhvw liZOtLmvxFd5ts5zyIeuf6TNoYLsD7bww2xSbSWqHC98llXKt3qZ3ab/jS3O4bhzk9dp4S5V4 qP5mTkpgTVdMg26wkwntqKIokPk4lvb13QmLyamhznBfOW7/EJimC+3VsMyi2OblfjU9HtSAO sKcRkn6IT9mplaE4o3hDkxRA0AsQ9btN861o6QtOQYL9GZuokuOJd4lq9HJmRrrTqnKO8pFuu JymdMvqKeQnMLCQ1MQ4XodYUye+3ISw2NR1L+ofw/xWrkJ59cr58ggIpi+WYTke4Myr9npQIQ hGoaXo3CLb+jRZdiT3TMSZNofw0dmRSSUaGUFA== Received-SPF: none client-ip=212.227.126.134; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland This is in preparation for creating a qdev property of the same name. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-3-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- include/hw/nubus/nubus.h | 2 +- hw/nubus/nubus-device.c | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h index e2b5cf260ba9..424309dd730d 100644 --- a/include/hw/nubus/nubus.h +++ b/include/hw/nubus/nubus.h @@ -42,7 +42,7 @@ struct NubusBus { struct NubusDevice { DeviceState qdev; - int slot_nb; + int slot; MemoryRegion slot_mem; /* Format Block */ diff --git a/hw/nubus/nubus-device.c b/hw/nubus/nubus-device.c index ffe78a882314..be0126956391 100644 --- a/hw/nubus/nubus-device.c +++ b/hw/nubus/nubus-device.c @@ -87,7 +87,7 @@ static void nubus_register_format_block(NubusDevice *dev) char *fblock_name; fblock_name = g_strdup_printf("nubus-slot-%d-format-block", - dev->slot_nb); + dev->slot); hwaddr fblock_offset = memory_region_size(&dev->slot_mem) - FBLOCK_SIZE; memory_region_init_io(&dev->fblock_io, NULL, &nubus_format_block_ops, @@ -142,7 +142,7 @@ void nubus_register_rom(NubusDevice *dev, const uint8_t *rom, uint32_t size, /* ROM */ dev->rom = rom; - rom_name = g_strdup_printf("nubus-slot-%d-rom", dev->slot_nb); + rom_name = g_strdup_printf("nubus-slot-%d-rom", dev->slot); memory_region_init_io(&dev->rom_io, NULL, &mac_nubus_rom_ops, dev, rom_name, size); memory_region_set_readonly(&dev->rom_io, true); @@ -167,12 +167,12 @@ static void nubus_device_realize(DeviceState *dev, Error **errp) return; } - nd->slot_nb = nubus->current_slot++; - name = g_strdup_printf("nubus-slot-%d", nd->slot_nb); + nd->slot = nubus->current_slot++; + name = g_strdup_printf("nubus-slot-%d", nd->slot); - if (nd->slot_nb < NUBUS_FIRST_SLOT) { + if (nd->slot < NUBUS_FIRST_SLOT) { /* Super */ - slot_offset = (nd->slot_nb - 6) * NUBUS_SUPER_SLOT_SIZE; + slot_offset = (nd->slot - 6) * NUBUS_SUPER_SLOT_SIZE; memory_region_init(&nd->slot_mem, OBJECT(dev), name, NUBUS_SUPER_SLOT_SIZE); @@ -180,7 +180,7 @@ static void nubus_device_realize(DeviceState *dev, Error **errp) &nd->slot_mem); } else { /* Normal */ - slot_offset = nd->slot_nb * NUBUS_SLOT_SIZE; + slot_offset = nd->slot * NUBUS_SLOT_SIZE; memory_region_init(&nd->slot_mem, OBJECT(dev), name, NUBUS_SLOT_SIZE); memory_region_add_subregion(&nubus->slot_io, slot_offset, From patchwork Wed Sep 29 09:28:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534289 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBQ96JT3z9ssD for ; Wed, 29 Sep 2021 19:48:17 +1000 (AEST) Received: from localhost ([::1]:48748 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVWCF-0003or-Km for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:48:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44996) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVta-0001xs-6t for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:58 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:53609) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtX-0005nO-Ki for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:57 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1N5max-1muhUc47b9-017G1o; Wed, 29 Sep 2021 11:28:46 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 03/20] nubus-device: expose separate super slot memory region Date: Wed, 29 Sep 2021 11:28:26 +0200 Message-Id: <20210929092843.2686234-4-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:3Kl9yFZE+uL5XFuYwzeDIhOYGsRva3eLS6cIthpJA/jOVRztO9D kDIobUvlNcbBbKu82ud2kq0oy+4aUJBzRaFd6Fl9/yC8/KaJovVC1PNrR5/mqHlFO8knRgu n22Q8BRef2Xi6blmBI2YIKwkJIuFuu3qRxFNuhqLXPKg3BMB97FJsCryL7FPRbb+bxQUj4R ceXQAVJYU02GZexV6x8rA== X-UI-Out-Filterresults: notjunk:1;V03:K0:UGzRPfKx+O4=:v/O7e5EPNiZMXg3oHKLihV ppSDJ3emcrWxge7sGEyDbmJwvvMy4jxmsIH1m0CCF1gK2NMjWoQ0InGFX+7nI3CskTVtGdAMT 54FpWFdfkl2Tg2j2VQPoqu7c2FSl7PbYl3dxQX1yrl0A5AHZi61xt8u8MR0+J8ZsguE28afs2 VBmHTxMe4N6ihVFSGDFm4OgZG1zDhDYvX0FuAT7XCeKZl9/ToPSaFiHN4o/XF4XSGwkQ6BbAa LZO4Nx0UdD2wHW21jFZm+hTCvH05Uyp1ejdF4c7CnKM0gdPm070CHGNoHGglXzBFTeOxYvqLm GMUaP+ck3nFYBm7Ta3vvFMbyVyeWGudTPE1bnn+yPN6c0989ncWvjRW+yIj3QGaitiXDRQtK8 di3aIogofWCxEGg0fNBuaxcSiC8wgoNq9mfUDRWJ2E550J41/xDMh+q13McJS260VPWz6yQRg tjAUmDhaTtGSPZyivdb6Rh7ZtD6+w1d7iyx331JP4l9eQRPhrPfLxmbvIrlTwwYJ6KdeFAHiK ts5Y14Yv3ybb1q8LbzoigVsTs5FLfzkeVyPE65zq5nYYVqmUpuryqgOrBHWko4h+wm7f82T3r dayniBuGG0eSkhm+vPcIcgL7FQ44loLyGElTs5VKaDgzjnis0JdKs99HESGd0RAzZh3ZuFh2E PAr4WaDCakAGqQiNZvQy8NiRHcFFuCxS9bBBybnw7yzFPDTQxO33OBGsf3dpL3b74piRZ77k1 X185+Ik63+3U9FnsZxuwLQw0qM5bdLoAAcbrGA== Received-SPF: none client-ip=212.227.126.134; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland According to "Designing Cards and Drivers for the Macintosh Family" each physical nubus slot can access 2 separate address ranges: a super slot memory region which is 256MB and a standard slot memory region which is 16MB. Currently a Nubus device uses the physical slot number to determine whether it is using a standard slot memory region or a super slot memory region rather than exposing both memory regions for use as required. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-4-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- include/hw/nubus/nubus.h | 1 + hw/nubus/nubus-device.c | 36 ++++++++++++++++++------------------ 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h index 424309dd730d..89b0976aaa3d 100644 --- a/include/hw/nubus/nubus.h +++ b/include/hw/nubus/nubus.h @@ -43,6 +43,7 @@ struct NubusDevice { DeviceState qdev; int slot; + MemoryRegion super_slot_mem; MemoryRegion slot_mem; /* Format Block */ diff --git a/hw/nubus/nubus-device.c b/hw/nubus/nubus-device.c index be0126956391..4e23df1280f9 100644 --- a/hw/nubus/nubus-device.c +++ b/hw/nubus/nubus-device.c @@ -168,26 +168,26 @@ static void nubus_device_realize(DeviceState *dev, Error **errp) } nd->slot = nubus->current_slot++; - name = g_strdup_printf("nubus-slot-%d", nd->slot); - - if (nd->slot < NUBUS_FIRST_SLOT) { - /* Super */ - slot_offset = (nd->slot - 6) * NUBUS_SUPER_SLOT_SIZE; - - memory_region_init(&nd->slot_mem, OBJECT(dev), name, - NUBUS_SUPER_SLOT_SIZE); - memory_region_add_subregion(&nubus->super_slot_io, slot_offset, - &nd->slot_mem); - } else { - /* Normal */ - slot_offset = nd->slot * NUBUS_SLOT_SIZE; - - memory_region_init(&nd->slot_mem, OBJECT(dev), name, NUBUS_SLOT_SIZE); - memory_region_add_subregion(&nubus->slot_io, slot_offset, - &nd->slot_mem); - } + /* Super */ + slot_offset = nd->slot * NUBUS_SUPER_SLOT_SIZE; + + name = g_strdup_printf("nubus-super-slot-%x", nd->slot); + memory_region_init(&nd->super_slot_mem, OBJECT(dev), name, + NUBUS_SUPER_SLOT_SIZE); + memory_region_add_subregion(&nubus->super_slot_io, slot_offset, + &nd->super_slot_mem); + g_free(name); + + /* Normal */ + slot_offset = nd->slot * NUBUS_SLOT_SIZE; + + name = g_strdup_printf("nubus-slot-%x", nd->slot); + memory_region_init(&nd->slot_mem, OBJECT(dev), name, NUBUS_SLOT_SIZE); + memory_region_add_subregion(&nubus->slot_io, slot_offset, + &nd->slot_mem); g_free(name); + nubus_register_format_block(nd); } From patchwork Wed Sep 29 09:28:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534278 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBB023mpz9ssD for ; Wed, 29 Sep 2021 19:37:44 +1000 (AEST) Received: from localhost ([::1]:51896 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVW22-0003Ts-0d for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:37:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44936) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtX-0001sd-On for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:55 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:45389) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtS-0005kw-FP for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:55 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1N4Qbu-1mvXVA1vT4-011S4b; Wed, 29 Sep 2021 11:28:46 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 04/20] nubus: use bitmap to manage available slots Date: Wed, 29 Sep 2021 11:28:27 +0200 Message-Id: <20210929092843.2686234-5-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:UuuSvtallTPnWp5RbL6B0Yga0rt7rMFvzHQrIV6tmPmNhcrCAwJ oT+HD/f88i5+ekXjgUAI78usBf7zbO9hLBwY5MyoaCEXXtpDVJNrhjS1tAQExYLbjtKiKyk ISE7kp+m3WPvgnvnaVTkkB032rLL7L4Os2LOFHikYWOc6PxfIsKsvcxLfL//cX3s5w7awJk ELH9ox0KYCrwu9PqXjb3A== X-UI-Out-Filterresults: notjunk:1;V03:K0:v6T+02Ltjbw=:j3aTcpstWF6BIVKQ2Sha72 9bCkrkSL40Y+ctBer2VGdlgwBxSJN4mTKUhkAvte4ZYDFMgOnx+aBvLS99uK2uM9xyRKeaSD2 QUrhgpLrUvQD0Vd/5Qy0bGqnTcyznf4zAyblYI7v1oHZrEdWNWhmuebhWDFd2CZHtE+rXXDRo 9rc0NsaAZ+5pTyz7oATIT3gz1WFH+fibMB4+wSL9cu8tvx/N5iT3q1yyrkrLLQpilQ6LF9yRr QePG6QoQxGXfKWTgkmrU2OrzpSvDyrti5vegEXNM9G9RZ9eYFpn3hWhb5xhzCp+RT7MmRTi2U UcVGDLdMulnaI/iEzMkqGLzFP9AbnmWw69bdcRzDHLyb+LR0uTzY0udZHK/Z7ZxG3hpcwD21Y 4QAAkYOLX0ZxuU9N0+f1ZdhIwkZm6JcMYJV43mHuAfYMtSUlMOjjIhLtOXFZMaonWrgIN3mNx 68Bdpjy4mAS2kWIm8//yDcjOqg/rwa19Nh8mKXTWGWhkF8XOyht0arRGGJhO1KXkJr3c+u484 bOE9tnw5pihOtPaN6caXvJWPRaZNl8v4yKFAPrP8IDi/aNtP/jeCHUKZtPLmk4yedlEhDk4HT sI4p3KYqm1rk9xq4ZkO555IM59R+iIIkTKWzx1IHO1t3JOQreUo1QTAJtTC1GcfE7HvtChNWI 4kX6Fjmf01yaZxUoo8FBagoNxtyzBiOifEVK0IDf09CvYXebPv7NTLlF8+x/VpDewAW8dG6FL A1BrrNfRomJIdBrWDLPR5TXegrjIHY5T3JoUBQ== Received-SPF: none client-ip=212.227.126.133; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland Convert nubus_device_realize() to use a bitmap to manage available slots to allow for future Nubus devices to be plugged into arbitrary slots from the command line using a new qdev "slot" parameter for nubus devices. Update mac_nubus_bridge_init() to only allow slots 0x9 to 0xe on Macintosh machines as documented in "Designing Cards and Drivers for the Macintosh Family". Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20210924073808.1041-5-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- include/hw/nubus/mac-nubus-bridge.h | 4 ++++ include/hw/nubus/nubus.h | 13 ++++++------- hw/nubus/mac-nubus-bridge.c | 4 ++++ hw/nubus/nubus-bus.c | 5 +++-- hw/nubus/nubus-device.c | 29 ++++++++++++++++++++++++----- 5 files changed, 41 insertions(+), 14 deletions(-) diff --git a/include/hw/nubus/mac-nubus-bridge.h b/include/hw/nubus/mac-nubus-bridge.h index 36aa098dd4bf..118d67267dd5 100644 --- a/include/hw/nubus/mac-nubus-bridge.h +++ b/include/hw/nubus/mac-nubus-bridge.h @@ -12,6 +12,10 @@ #include "hw/nubus/nubus.h" #include "qom/object.h" +#define MAC_NUBUS_FIRST_SLOT 0x9 +#define MAC_NUBUS_LAST_SLOT 0xe +#define MAC_NUBUS_SLOT_NB (MAC_NUBUS_LAST_SLOT - MAC_NUBUS_FIRST_SLOT + 1) + #define TYPE_MAC_NUBUS_BRIDGE "mac-nubus-bridge" OBJECT_DECLARE_SIMPLE_TYPE(MacNubusState, MAC_NUBUS_BRIDGE) diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h index 89b0976aaa3d..3eea2952d553 100644 --- a/include/hw/nubus/nubus.h +++ b/include/hw/nubus/nubus.h @@ -14,13 +14,12 @@ #include "qom/object.h" #define NUBUS_SUPER_SLOT_SIZE 0x10000000U -#define NUBUS_SUPER_SLOT_NB 0x9 +#define NUBUS_SUPER_SLOT_NB 0xe #define NUBUS_SLOT_SIZE 0x01000000 -#define NUBUS_SLOT_NB 0xF - -#define NUBUS_FIRST_SLOT 0x9 -#define NUBUS_LAST_SLOT 0xF +#define NUBUS_FIRST_SLOT 0x0 +#define NUBUS_LAST_SLOT 0xf +#define NUBUS_SLOT_NB (NUBUS_LAST_SLOT - NUBUS_FIRST_SLOT + 1) #define TYPE_NUBUS_DEVICE "nubus-device" OBJECT_DECLARE_SIMPLE_TYPE(NubusDevice, NUBUS_DEVICE) @@ -36,13 +35,13 @@ struct NubusBus { MemoryRegion super_slot_io; MemoryRegion slot_io; - int current_slot; + uint16_t slot_available_mask; }; struct NubusDevice { DeviceState qdev; - int slot; + int32_t slot; MemoryRegion super_slot_mem; MemoryRegion slot_mem; diff --git a/hw/nubus/mac-nubus-bridge.c b/hw/nubus/mac-nubus-bridge.c index 7c329300b82c..3f075789e9b3 100644 --- a/hw/nubus/mac-nubus-bridge.c +++ b/hw/nubus/mac-nubus-bridge.c @@ -18,6 +18,10 @@ static void mac_nubus_bridge_init(Object *obj) s->bus = NUBUS_BUS(qbus_create(TYPE_NUBUS_BUS, DEVICE(s), NULL)); + /* Macintosh only has slots 0x9 to 0xe available */ + s->bus->slot_available_mask = MAKE_64BIT_MASK(MAC_NUBUS_FIRST_SLOT, + MAC_NUBUS_SLOT_NB); + sysbus_init_mmio(sbd, &s->bus->super_slot_io); sysbus_init_mmio(sbd, &s->bus->slot_io); } diff --git a/hw/nubus/nubus-bus.c b/hw/nubus/nubus-bus.c index f4410803fffe..3cd75348646b 100644 --- a/hw/nubus/nubus-bus.c +++ b/hw/nubus/nubus-bus.c @@ -86,13 +86,14 @@ static void nubus_init(Object *obj) memory_region_init_io(&nubus->super_slot_io, obj, &nubus_super_slot_ops, nubus, "nubus-super-slots", - NUBUS_SUPER_SLOT_NB * NUBUS_SUPER_SLOT_SIZE); + (NUBUS_SUPER_SLOT_NB + 1) * NUBUS_SUPER_SLOT_SIZE); memory_region_init_io(&nubus->slot_io, obj, &nubus_slot_ops, nubus, "nubus-slots", NUBUS_SLOT_NB * NUBUS_SLOT_SIZE); - nubus->current_slot = NUBUS_FIRST_SLOT; + nubus->slot_available_mask = MAKE_64BIT_MASK(NUBUS_FIRST_SLOT, + NUBUS_SLOT_NB); } static void nubus_class_init(ObjectClass *oc, void *data) diff --git a/hw/nubus/nubus-device.c b/hw/nubus/nubus-device.c index 4e23df1280f9..2e96d6b4fc39 100644 --- a/hw/nubus/nubus-device.c +++ b/hw/nubus/nubus-device.c @@ -161,13 +161,26 @@ static void nubus_device_realize(DeviceState *dev, Error **errp) char *name; hwaddr slot_offset; - if (nubus->current_slot < NUBUS_FIRST_SLOT || - nubus->current_slot > NUBUS_LAST_SLOT) { - error_setg(errp, "Cannot register nubus card, not enough slots"); - return; + if (nd->slot == -1) { + /* No slot specified, find first available free slot */ + int s = ctz32(nubus->slot_available_mask); + if (s != 32) { + nd->slot = s; + } else { + error_setg(errp, "Cannot register nubus card, no free slot " + "available"); + return; + } + } else { + /* Slot specified, make sure the slot is available */ + if (!(nubus->slot_available_mask & BIT(nd->slot))) { + error_setg(errp, "Cannot register nubus card, slot %d is " + "unavailable or already occupied", nd->slot); + return; + } } - nd->slot = nubus->current_slot++; + nubus->slot_available_mask &= ~BIT(nd->slot); /* Super */ slot_offset = nd->slot * NUBUS_SUPER_SLOT_SIZE; @@ -191,12 +204,18 @@ static void nubus_device_realize(DeviceState *dev, Error **errp) nubus_register_format_block(nd); } +static Property nubus_device_properties[] = { + DEFINE_PROP_INT32("slot", NubusDevice, slot, -1), + DEFINE_PROP_END_OF_LIST() +}; + static void nubus_device_class_init(ObjectClass *oc, void *data) { DeviceClass *dc = DEVICE_CLASS(oc); dc->realize = nubus_device_realize; dc->bus_type = TYPE_NUBUS_BUS; + device_class_set_props(dc, nubus_device_properties); } static const TypeInfo nubus_device_type_info = { From patchwork Wed Sep 29 09:28:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534276 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKB5b00bVz9ssD for ; Wed, 29 Sep 2021 19:33:54 +1000 (AEST) Received: from localhost ([::1]:44570 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVVyK-0006oy-Oq for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:33:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44928) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtX-0001qg-9A for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:55 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:37851) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtS-0005kr-9p for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:55 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MRTAj-1m8kDT451Z-00NUpC; Wed, 29 Sep 2021 11:28:47 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 05/20] nubus: move slot bitmap checks from NubusDevice realize() to BusClass check_address() Date: Wed, 29 Sep 2021 11:28:28 +0200 Message-Id: <20210929092843.2686234-6-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:CUJ/J4uF2iaoVj70WBiThgw+Sj7VYK8vRxTQmPnbFp9LSYXZMSd 4nFu7mhmz8Q5ZADPHPOpzfr6WhNtzNdJ3QyDAO6wbXiW0YLt6mNnbpHyTNxPtbUP/LxE1Xs 3POKsa6OW5bH4RnK9PpZYG3IE/M/GUWrZlAtaCEEXLzO938FAH8MGhxm+UBTXnZ0Lv257s1 1I8pw/aXnJZZr1SGJh51w== X-UI-Out-Filterresults: notjunk:1;V03:K0:5Kg0lQvqvMU=:KqvkAmC5p36Asef9puvtGI 7gKrMKr+BsNEiqXggXoBwywRhTFcDG4ifnBv0rOsKld2GRpz4yrZ12hvmH/i/0q81Kdfs8duS erzC44ocZ71eNGY1vAEpy5/sFNg2sMDMcEqN2PC/BP9laQBzkCllluJczr55/Me3tsvY3ovaZ phqosD1n0xNiK/caLB8EtB1I5Pjla1k6ikTHhHdignz7lE7Wk2oRMwx/lG9Brq8H+o7gSmL3z g0syi0GPrYTm+fq2PQnlyTvWYQQvn21Ir+BzBFmpLVNPxe1kZr/81+/rCV4vWg2dVKFiod5Ml N53TCMdc9uv4BvLRjaAP6+0EBRl/CWQdz8k9TjKuP7yesFIfVBiCojX50uTeqGA8FwBFjs05J dphMDDMANC3nsLChgaZ/e0U2OV7oB6tY2deBG2HEzlHcBsvwH4Fs8+kPcP0QsAMVNSu4QE+uN 0BPD3Z5AY7MvY19617TeGA5rNBTMcztu5Vs47VaFkCSCQsFeoQ42AcEoSnGeYYWP+413qyXrw aMXSJ9mY2EEpMp/2K2qA2ILlOSZUuZMQLklTCilh/SIWLNuuOZxNk6f5T7HCpYWPO5h+o4Fs1 H25jhcEXNhe4NMuJ8z1V0fO0mU38t3hEdESudlpoSWLzoKiEeu/QbxJR5oLvR+ybPaJFO04C1 CAu5fi8j9GG8xYb2RYJyo9BEQZ/5zVqyjLfwDBcG0d9Fa8gR6kQOg9yK+TkIHzHPcvpNIdc/l HyZ0H2d+vhatzVVe3bh06n0GNVllCeBCGrsQJA== Received-SPF: none client-ip=212.227.126.187; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland Allow Nubus to manage the slot allocations itself using the BusClass check_address() virtual function rather than managing this during NubusDevice realize(). Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20210924073808.1041-6-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- hw/nubus/nubus-bus.c | 29 +++++++++++++++++++++++++++++ hw/nubus/nubus-device.c | 21 --------------------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/hw/nubus/nubus-bus.c b/hw/nubus/nubus-bus.c index 3cd75348646b..96ef027bad26 100644 --- a/hw/nubus/nubus-bus.c +++ b/hw/nubus/nubus-bus.c @@ -96,11 +96,40 @@ static void nubus_init(Object *obj) NUBUS_SLOT_NB); } +static bool nubus_check_address(BusState *bus, DeviceState *dev, Error **errp) +{ + NubusDevice *nd = NUBUS_DEVICE(dev); + NubusBus *nubus = NUBUS_BUS(bus); + + if (nd->slot == -1) { + /* No slot specified, find first available free slot */ + int s = ctz32(nubus->slot_available_mask); + if (s != 32) { + nd->slot = s; + } else { + error_setg(errp, "Cannot register nubus card, no free slot " + "available"); + return false; + } + } else { + /* Slot specified, make sure the slot is available */ + if (!(nubus->slot_available_mask & BIT(nd->slot))) { + error_setg(errp, "Cannot register nubus card, slot %d is " + "unavailable or already occupied", nd->slot); + return false; + } + } + + nubus->slot_available_mask &= ~BIT(nd->slot); + return true; +} + static void nubus_class_init(ObjectClass *oc, void *data) { BusClass *bc = BUS_CLASS(oc); bc->realize = nubus_realize; + bc->check_address = nubus_check_address; } static const TypeInfo nubus_bus_info = { diff --git a/hw/nubus/nubus-device.c b/hw/nubus/nubus-device.c index 2e96d6b4fc39..516b13d2d53d 100644 --- a/hw/nubus/nubus-device.c +++ b/hw/nubus/nubus-device.c @@ -161,27 +161,6 @@ static void nubus_device_realize(DeviceState *dev, Error **errp) char *name; hwaddr slot_offset; - if (nd->slot == -1) { - /* No slot specified, find first available free slot */ - int s = ctz32(nubus->slot_available_mask); - if (s != 32) { - nd->slot = s; - } else { - error_setg(errp, "Cannot register nubus card, no free slot " - "available"); - return; - } - } else { - /* Slot specified, make sure the slot is available */ - if (!(nubus->slot_available_mask & BIT(nd->slot))) { - error_setg(errp, "Cannot register nubus card, slot %d is " - "unavailable or already occupied", nd->slot); - return; - } - } - - nubus->slot_available_mask &= ~BIT(nd->slot); - /* Super */ slot_offset = nd->slot * NUBUS_SUPER_SLOT_SIZE; From patchwork Wed Sep 29 09:28:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534291 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBSb0GgYz9ssD for ; Wed, 29 Sep 2021 19:50:23 +1000 (AEST) Received: from localhost ([::1]:53030 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVWEG-0006il-Nr for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:50:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45020) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtb-00021i-P7 for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:59 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:50829) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVta-0005qU-7N for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:59 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MhUQ7-1n1G0q1wqR-00ecIi; Wed, 29 Sep 2021 11:28:47 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 06/20] nubus: implement BusClass get_dev_path() Date: Wed, 29 Sep 2021 11:28:29 +0200 Message-Id: <20210929092843.2686234-7-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:h+ftqzMgrGdRhau9XXPR4svOyg6eZ6RlH/jKJ1nDiE46xCmEnfb xN5FLmpBys0kVB6tSyE95ig0Ea1okzfzSkCkzkUs1XK79uCB7QEX5HtVOZYfYaDt3Rd4cer r36icbelC+YjhoF22Dy4x/w7VrUsWuBkA2OK9kvcH/HRXX5YVPP9kACH2o97BOGLy7b8IRW Py8/7aIbzy4EESO77ZpSQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:0mjs8Ofn8KA=:Dt7HH0les0I3oaVR4prhLY YgcEn+b1l6NsFuP3ng9yNKtj9smOUHiWmc/+dbsmDs3xSuTKMOfUu6ma87B9IiJpb2BkKU9Za OACDxtMbjWM5KsnfyD7M2tg9zU5s7ljat3CDgBqNO19Z9rnR7+EYEP7ejSUyLuTOFQpx+pOQZ 6y4tgi8CCBlfayZ1U7Wq+/Obm9bYPEN9LhgxGovC1VhNruQ2Mt8G3GMvsPDt2BlO+CaA2fR3t hsMAzqjEy13WMYZVUO6EzgXSJoBKJlgYkjOzurnI9iQTElTxpSOEBMloJ1BdcjJ8FJEcRtucc UFv0vcAxghBxOktqqgMfCnFZ7lRPzQOQaa2bAF5s2DuW7OsbAn8s3P/2C8EvJucJEwL38SXJW Mqh6zYkvlg+BfYWZ4o8N4eYACKkhN2NeF1ReIYU/vZGsCOa2KdrCOz7F7YvEOVNEZ7l5n3YCQ 0E/Z2EgiwLfALCwBxu3g1/DH+alCfYTgL10V76tJ+3INIiLKN2wvTblKJphw7PP/7YoH4rXj4 TO9aGabLtG5IWEvb7H7EkxC4dCwIz/ycwHsmxPd4KK5k2bUp6I0qCx2Qhij14i5Rx9rjH8PAM roWAzhUqiewCjVm+H4hjITgfjJRTIW0tiyWJWvvTVP8BEciDd+Co09iVswNMVv6XcJZHkyv/q znu2jRR0Di5T3HoA2uqsbt/V5wlwpxpldwcPdJN0dXHQ4+d5Y/Q9//PEQ+DxGLU1iexmvEocR mFmj922QJu2VZSnoM9t+OnRAkjVYh079UpzIVw== Received-SPF: none client-ip=212.227.126.130; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-7-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- hw/nubus/nubus-bus.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/hw/nubus/nubus-bus.c b/hw/nubus/nubus-bus.c index 96ef027bad26..04f11edd2465 100644 --- a/hw/nubus/nubus-bus.c +++ b/hw/nubus/nubus-bus.c @@ -96,6 +96,21 @@ static void nubus_init(Object *obj) NUBUS_SLOT_NB); } +static char *nubus_get_dev_path(DeviceState *dev) +{ + NubusDevice *nd = NUBUS_DEVICE(dev); + BusState *bus = qdev_get_parent_bus(dev); + char *p = qdev_get_dev_path(bus->parent); + + if (p) { + char *ret = g_strdup_printf("%s/%s/%02x", p, bus->name, nd->slot); + g_free(p); + return ret; + } else { + return g_strdup_printf("%s/%02x", bus->name, nd->slot); + } +} + static bool nubus_check_address(BusState *bus, DeviceState *dev, Error **errp) { NubusDevice *nd = NUBUS_DEVICE(dev); @@ -130,6 +145,7 @@ static void nubus_class_init(ObjectClass *oc, void *data) bc->realize = nubus_realize; bc->check_address = nubus_check_address; + bc->get_dev_path = nubus_get_dev_path; } static const TypeInfo nubus_bus_info = { From patchwork Wed Sep 29 09:28:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534297 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBf719fxz9svs for ; Wed, 29 Sep 2021 19:58:37 +1000 (AEST) Received: from localhost ([::1]:38042 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVWME-0007Qm-BL for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:58:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45070) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtf-000295-T9 for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:07 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:35423) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVta-0005qd-GT for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:03 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1M1HqM-1mYH3C06aw-002nRx; Wed, 29 Sep 2021 11:28:48 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 07/20] nubus: add trace-events for empty slot accesses Date: Wed, 29 Sep 2021 11:28:30 +0200 Message-Id: <20210929092843.2686234-8-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:llOd+AHXWEFRb5NqqDzvKos7h5dUILgJYUeKp2Jl/dhQaIS5up3 lZ3ru0QshJX3qh05QE09X8yenwTHl09g/c0X8A5AyDwV2+4T7QNqIwj+BM6WPOL0ruA5K7t y7HDoiuauKXuyVDnCUzusDr1UuUmG8yLa6w/HiwXP9gYorI5SwSc1WUahaU7DqlUzR4N994 LgwCPyHyXrVq2GjNVYbGA== X-UI-Out-Filterresults: notjunk:1;V03:K0:PEQgKKI8rKE=:efIkO/oZjS2K15XfufC041 XUlzT0kTQAxHEeKouWOvKG13Wk7b2BFlxD4Lg3TGqgA/ckAjWiash2kFEt6lsVGP3dxDrDMxX GNSIbtGYPYXeAHfUqIqNKcL1cNp+det4a6ve9EJEqNYnPg28IIfR13RqjpspuIAZ5AvtAh/Lc YLNC1FcY8JawtgE90gRXKMq3MUlLlj34axllSK97LbxeE37GNXVcS+Ta1Zxju0GuapuK73THk 8VO1VXqtVmPKme6g44rLB4pUdahGLQo0w0SGm1H8WKcjDMwjRVNP4tYROGztHqoQMc7gj4Svz hZL/w3pAsrW5DvgXr2c3GQqFDfaivKq0Z85QKTLJauArFT7EHXbAxsmwcRdngT4XXmPa9mcoh 73qo2KwJvnwJFh8Q0otZUbsu/VVbv7EEUNpbl7rtsPPGYMRbcBobbVOR6WruxgLDEEfg078n4 C5LE4LpuU9w4BFIttiNrhGYsWIw6mTr1EEslWH5mXMF5jH4Ep0LFjTIPqbr9tkbw1/ZzMJuAR oHhLEt0uxHUWK90PSWpiH8/EsNgET+k8gkDPaxhtg+Cl7p7MfdGN06uTcafvCQ/xQtyqJt0j8 1tMEulvntVMK/YiAo812OsVQgiaUvujm18E29x2b/sOk6HvvtifB5ybRcYPQ3uLx/yJongMsp 2tOSNt2mFiFhRllxXAAek4asIeZJerMlVZNkaUweBfV44PIVip6D1SZ2XrbzpQvzfk9n5bKCE u14LwHyXIRIc1VnFymeNoWd9cpqOf+9zjKGN8g== Received-SPF: none client-ip=212.227.126.134; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland Increase the max_access_size to 4 bytes for empty Nubus slot and super slot accesses to allow tracing of the Nubus enumeration process by the guest OS. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-8-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- meson.build | 1 + hw/nubus/trace.h | 1 + hw/nubus/nubus-bus.c | 10 +++++++--- hw/nubus/trace-events | 7 +++++++ 4 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 hw/nubus/trace.h create mode 100644 hw/nubus/trace-events diff --git a/meson.build b/meson.build index 15ef4d3c4187..7bdbbbdf02ed 100644 --- a/meson.build +++ b/meson.build @@ -2142,6 +2142,7 @@ if have_system 'hw/misc/macio', 'hw/net', 'hw/net/can', + 'hw/nubus', 'hw/nvme', 'hw/nvram', 'hw/pci', diff --git a/hw/nubus/trace.h b/hw/nubus/trace.h new file mode 100644 index 000000000000..3749420da175 --- /dev/null +++ b/hw/nubus/trace.h @@ -0,0 +1 @@ +#include "trace/trace-hw_nubus.h" diff --git a/hw/nubus/nubus-bus.c b/hw/nubus/nubus-bus.c index 04f11edd2465..a9fb6ded9e4e 100644 --- a/hw/nubus/nubus-bus.c +++ b/hw/nubus/nubus-bus.c @@ -19,6 +19,7 @@ #include "qemu/osdep.h" #include "hw/nubus/nubus.h" #include "qapi/error.h" +#include "trace.h" static NubusBus *nubus_find(void) @@ -31,12 +32,13 @@ static void nubus_slot_write(void *opaque, hwaddr addr, uint64_t val, unsigned int size) { /* read only */ + trace_nubus_slot_write(addr, val, size); } - static uint64_t nubus_slot_read(void *opaque, hwaddr addr, unsigned int size) { + trace_nubus_slot_read(addr, size); return 0; } @@ -46,7 +48,7 @@ static const MemoryRegionOps nubus_slot_ops = { .endianness = DEVICE_BIG_ENDIAN, .valid = { .min_access_size = 1, - .max_access_size = 1, + .max_access_size = 4, }, }; @@ -54,11 +56,13 @@ static void nubus_super_slot_write(void *opaque, hwaddr addr, uint64_t val, unsigned int size) { /* read only */ + trace_nubus_super_slot_write(addr, val, size); } static uint64_t nubus_super_slot_read(void *opaque, hwaddr addr, unsigned int size) { + trace_nubus_super_slot_read(addr, size); return 0; } @@ -68,7 +72,7 @@ static const MemoryRegionOps nubus_super_slot_ops = { .endianness = DEVICE_BIG_ENDIAN, .valid = { .min_access_size = 1, - .max_access_size = 1, + .max_access_size = 4, }, }; diff --git a/hw/nubus/trace-events b/hw/nubus/trace-events new file mode 100644 index 000000000000..e31833d694af --- /dev/null +++ b/hw/nubus/trace-events @@ -0,0 +1,7 @@ +# See docs/devel/tracing.txt for syntax documentation. + +# nubus-bus.c +nubus_slot_read(uint64_t addr, int size) "reading unassigned addr 0x%"PRIx64 " size %d" +nubus_slot_write(uint64_t addr, uint64_t val, int size) "writing unassigned addr 0x%"PRIx64 " value 0x%"PRIx64 " size %d" +nubus_super_slot_read(uint64_t addr, int size) "reading unassigned addr 0x%"PRIx64 " size %d" +nubus_super_slot_write(uint64_t addr, uint64_t val, int size) "writing unassigned addr 0x%"PRIx64 " value 0x%"PRIx64 " size %d" From patchwork Wed Sep 29 09:28:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534296 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBbk4ygtz9ssD for ; Wed, 29 Sep 2021 19:56:34 +1000 (AEST) Received: from localhost ([::1]:34382 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVWKG-0004pr-FB for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:56:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45042) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtd-00024S-69 for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:01 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:58299) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVta-0005qg-Ix for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:00 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1M1q4e-1mXioq2Gmu-002FUB; Wed, 29 Sep 2021 11:28:48 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 08/20] nubus: generate bus error when attempting to access empty slots Date: Wed, 29 Sep 2021 11:28:31 +0200 Message-Id: <20210929092843.2686234-9-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:jSCUnpEoiEZU2+l5R2/TnoHeE7c+d4Vg/kix7thKvrEtVx1OymI qJEiHIzZRlnhhFhVYgKPNNtFh19442/qN6d8Hb47PgBCsoJEDqnWkp8n2eoI16grlCEdIGq KJL2RJBO5dJnp9VrqcGhE+SLTVCADy7/GOitsuvHqkeFWJPlXSBvxyQ+x0sXstgTp+FS7yS JPHBZfNbj4M11qyj1yQcQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:rviC9qnDCwU=:M6vuhiibbKfoiBGf7AwjCV 1Q04Jh+58qcgjZvRSYDasQq3K0oaNLyuov7CUZNDvKcusmgOvf3bk3Yr7jzf/Tf+4CySo6CZ0 sFutqlUqkXmPwBheHAsmF2j8+qsXZcm6zQmVxBl9pGbsCeguSyaaiiksuSuNH42wETukSIjYs QDqiGWHWLbV/FGcXXWBQ0HGzM2CzdQtPkMdJgI1k9wiCz5Trg/iGzEKWQ6qlJjafNCkV0wbPH lfwExFd87JqIs9FuD/77aErp5uwi3Sz3YTwqDwF5Mc80u/cSIE9ga+yd8lZMZpX0Dm7RXbz3g /R/DYPQEw/s7yWSry6EBCxs9++B32O2sU+XzvSUOTdBZzPYRfUUucc7JgFAt9NPngtkzAFbqi jc7qOLitstS4uBvJjCaC8C0luxlWoPKyNI9f2DYaiu9joL16lasHzWdvufPDEsISN3gXWpQrm CvX8Hj+s/m7Wc8/qhP7fhe1bii6Hz9pGAdZvfMgENhliidEveeX6dRibyWCptFqYXYDZpFX85 pto7k1QI9txxrAVU74yPTYrnD+MEIaV4O74x8lfQFuGvi9mPvvck2G/juoDSdwy2DKWGmdzyR HEcF/QyRGmEuTRIbscje579Q1aKflzUsJt3/QOIKLtEUBwA0EvexXBCO1zj4xH2AR87vLcLju kIz4IG3oXuU6WYourcE3DuB8yT+UGA71lEyUAzT7fmr4WDf5WbyAcGdaZV2mVi11vwb7HZgDQ SYs0KYFfgSNR0ZJfV4R3ec1XSAOmnHjNvrzuhg== Received-SPF: none client-ip=212.227.126.130; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland According to "Designing Cards and Drivers for the Macintosh Family" any attempt to access an unimplemented address location on Nubus generates a bus error. MacOS uses a custom bus error handler to detect empty Nubus slots, and with the current implementation assumes that all slots are occupied as the Nubus transactions never fail. Switch nubus_slot_ops and nubus_super_slot_ops over to use {read,write}_with_attrs and hard-code them to return MEMTX_DECODE_ERROR so that unoccupied Nubus slots will generate the expected bus error. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-9-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- hw/nubus/nubus-bus.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/hw/nubus/nubus-bus.c b/hw/nubus/nubus-bus.c index a9fb6ded9e4e..215fdb6b4ec2 100644 --- a/hw/nubus/nubus-bus.c +++ b/hw/nubus/nubus-bus.c @@ -28,23 +28,23 @@ static NubusBus *nubus_find(void) return NUBUS_BUS(object_resolve_path_type("", TYPE_NUBUS_BUS, NULL)); } -static void nubus_slot_write(void *opaque, hwaddr addr, uint64_t val, - unsigned int size) +static MemTxResult nubus_slot_write(void *opaque, hwaddr addr, uint64_t val, + unsigned size, MemTxAttrs attrs) { - /* read only */ trace_nubus_slot_write(addr, val, size); + return MEMTX_DECODE_ERROR; } -static uint64_t nubus_slot_read(void *opaque, hwaddr addr, - unsigned int size) +static MemTxResult nubus_slot_read(void *opaque, hwaddr addr, uint64_t *data, + unsigned size, MemTxAttrs attrs) { trace_nubus_slot_read(addr, size); - return 0; + return MEMTX_DECODE_ERROR; } static const MemoryRegionOps nubus_slot_ops = { - .read = nubus_slot_read, - .write = nubus_slot_write, + .read_with_attrs = nubus_slot_read, + .write_with_attrs = nubus_slot_write, .endianness = DEVICE_BIG_ENDIAN, .valid = { .min_access_size = 1, @@ -52,23 +52,25 @@ static const MemoryRegionOps nubus_slot_ops = { }, }; -static void nubus_super_slot_write(void *opaque, hwaddr addr, uint64_t val, - unsigned int size) +static MemTxResult nubus_super_slot_write(void *opaque, hwaddr addr, + uint64_t val, unsigned size, + MemTxAttrs attrs) { - /* read only */ trace_nubus_super_slot_write(addr, val, size); + return MEMTX_DECODE_ERROR; } -static uint64_t nubus_super_slot_read(void *opaque, hwaddr addr, - unsigned int size) +static MemTxResult nubus_super_slot_read(void *opaque, hwaddr addr, + uint64_t *data, unsigned size, + MemTxAttrs attrs) { trace_nubus_super_slot_read(addr, size); - return 0; + return MEMTX_DECODE_ERROR; } static const MemoryRegionOps nubus_super_slot_ops = { - .read = nubus_super_slot_read, - .write = nubus_super_slot_write, + .read_with_attrs = nubus_super_slot_read, + .write_with_attrs = nubus_super_slot_write, .endianness = DEVICE_BIG_ENDIAN, .valid = { .min_access_size = 1, From patchwork Wed Sep 29 09:28:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534279 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBDS6my6z9ssD for ; Wed, 29 Sep 2021 19:39:52 +1000 (AEST) Received: from localhost ([::1]:58030 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVW46-0007cQ-Br for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:39:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44950) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtX-0001t5-UN for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:55 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:58835) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtS-0005kz-JO for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:55 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MdvVu-1n4Iwo3wJS-00b1Gv; Wed, 29 Sep 2021 11:28:49 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 09/20] macfb: don't register declaration ROM Date: Wed, 29 Sep 2021 11:28:32 +0200 Message-Id: <20210929092843.2686234-10-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:fO1KF190X96L4f9TCNnSKpiiox6qocmaX3JdYeq6Z4r3OJHIKjw VkLFG0NEZb3W4RapbqA0OCSdKqmJvTaF7FFoof08H420ahrh/zFCMHAJ6UWk0c+0MXGSzC/ vW/m7K5q6UgXdT8MIFS+jfKibvT4oDgegtny0klJXv7ZvCEbhLMkDxsXZYZ++UbNlFYpPig OY72USbBwZ8FurUa3spig== X-UI-Out-Filterresults: notjunk:1;V03:K0:6fdveRv+GOI=:LMYhG5YDCxpj6AB9ilvRv3 tNJKULMUs1iZrc9pCwAL8TJQ/ouAt/W5WnKkjSa1TD7mb1AIx8sJT7ZSc0S/PwlQ43ZRy8c88 X1U3lo1paQ5vU52SMWXafGRsqsjjT6SPxcqndOnsR7Q6F+dpIjYRTJyCcx3FcICUcaASUFe0c luqM91cr1N4DZDFQPQAbuPOsoyvJiE4wEC2LW80auWrGeGsX+8mlif79JLEP0tqT04Jrs2jsr rYgotVmXpLc+U/LIoETQdydLeGx+5TGpx+J5UtA1ast/5uU0aGAsuFy9q5y4sq1nWx6WU8YXn TRhip/lfCvZ8hy9zfK8ex0dNyRtukt8mqHqzgV/N0HnmN2VUgvzpDZbJZtWhxajxzXMOm+Qou Ojw177fuK4mQ39kQSEwCikY67wxak+wL/xzvYKOjVKfDj76BK8NjBlX5MnpU4/6Q+qUqniAfn /mifTmaRdU0MtFQCJUsUWtJf3S3WhQAloVKP4nKQ6g/d4qkzbrXZNwRrAgxIjiCabItonAqDe jJzds/ttLPWN6acMpEmEnStMBhGZmAvz1u81DUXFLkVM8vgx112aFk8tx4NfNKgTn1chIKrpy y4zt/UGmRh+dyG5kdQl69ywjORKZHvKl+wYtzI5rZofoLamFXRJY+aFFuTSUx0CW+Lvzfrns+ 0aLqGLa4JshrLDFc+ASoz9d58OjVi6yBVnme1dQreviZcYvENcjxMDxIygBQFltjdR3AkaylY y8lWP0CQOOROLt6Wi8MZWn3wYbaSsTyYR0h4Lg== Received-SPF: none client-ip=212.227.126.130; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: 0 X-Spam_score: 0.0 X-Spam_bar: / X-Spam_report: (0.0 / 5.0 requ) RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland The macfb device is an on-board framebuffer and so is initialised by the system declaration ROM included within the MacOS toolbox ROM. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-10-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- hw/display/macfb.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/hw/display/macfb.c b/hw/display/macfb.c index d8183b9bbde6..76808b69ccc8 100644 --- a/hw/display/macfb.c +++ b/hw/display/macfb.c @@ -383,10 +383,6 @@ static void macfb_sysbus_realize(DeviceState *dev, Error **errp) sysbus_init_mmio(SYS_BUS_DEVICE(s), &ms->mem_vram); } -const uint8_t macfb_rom[] = { - 255, 0, 0, 0, -}; - static void macfb_nubus_realize(DeviceState *dev, Error **errp) { NubusDevice *nd = NUBUS_DEVICE(dev); @@ -399,8 +395,6 @@ static void macfb_nubus_realize(DeviceState *dev, Error **errp) macfb_common_realize(dev, ms, errp); memory_region_add_subregion(&nd->slot_mem, DAFB_BASE, &ms->mem_ctrl); memory_region_add_subregion(&nd->slot_mem, VIDEO_BASE, &ms->mem_vram); - - nubus_register_rom(nd, macfb_rom, sizeof(macfb_rom), 1, 9, 0xf); } static void macfb_sysbus_reset(DeviceState *d) From patchwork Wed Sep 29 09:28:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534290 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBR90Ny3z9ssD for ; Wed, 29 Sep 2021 19:49:09 +1000 (AEST) Received: from localhost ([::1]:49446 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVWD4-0004JJ-S1 for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:49:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44932) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtX-0001qs-DL for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:55 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:37493) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtS-0005lZ-Um for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:55 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MTiDV-1mO8Qm1QOz-00U3Kg; Wed, 29 Sep 2021 11:28:49 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 10/20] nubus-device: remove nubus_register_rom() and nubus_register_format_block() Date: Wed, 29 Sep 2021 11:28:33 +0200 Message-Id: <20210929092843.2686234-11-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:1qjO7kYPFavm1y5qjijn/PFMSLM6lICoAObLuNoVbTt9OEDz2cx gJPkhiUoofiBnqIvLn5bwEdl3tj38D0A0ypszYAthwGrGrgBMphJQIz7FZxlq7HKqGxFWCL IbtIabecu5ggvdQbZjZgdcDkIi69tPHcfOkp0VhNA11Jv5wosR4ZW26QcBpvE0hIdRDv2OM 52R0bIGM2Xum1K9Ptas/Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:UkybBEZF+FE=:kx2EFP+LFk7HAi92+wPcCc doCQ15hdP0H+tFgBWgJ7UWvEu1ecl7oaFeIzssufE0sXMV8CxMunm5YsSz/OClPGFF55jE6hh d6GZW7GocGs70Z/VY3bUyEJxhn6GbZ3rwMN6u/HlyVZM6JQEIyN+42L5G5nELOZv7uSCSkmEz 7sBMlqPDq+9W+OjQas+6ggBvZlNCe8s0pBaC8zYCCbKuml5zLBoCJVJHmKo1xl3NW74OlgcnJ erlMIOFkV+LAIehtTonzX6VKWxM8ZOaj+8k0jUjaCc6ZI+bjIT2RHS+kWy/CfgKsAvsFte53Q M9XjWCshgSvx8CI+fGK0l/KOVBhRFYdEaEU0iif/NUumjZPgSbBdf1vici89Y5e2sGXiI71s2 lPBI3UIiXKA4xaJfIJO3RZfHfYTt7xWkKiZo6Vq3Vuc+xHDG6OAV0Kp/tkIazuSxh9TPI+eEs zR89BPGEZ/awvEXmRTVuezsgLX6/cY4uGmlKc4kySZqsiVe46FQLLgz2NKXealWEgYZSNmplo 4UQlSBHVUzZ4JZWwkTwhKfXMYNSG+ay9nHgwwpbjxhoYrGIVAbuVfMfoaHlRRRdeLGNYjmIuo H/grCXdolvyCecfmJUie4QluasMWhbYQ6R6IsNRWx1um3BoFTbyBH9YEw7P4roYdRYNiq2FBc p2cXbOdJjfcoArs6Nh9A4pM4Q+1Dfz+TSDxDAw0lh8nqj9p/pNRz3v8H1Q4h47YsfJQdeccvQ QqGzwYn6gAOuZI6JZ0LGUS8HqcniAc2T2GzIyQ== Received-SPF: none client-ip=212.227.126.187; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland Since there is no need to generate a dummy declaration ROM, remove both nubus_register_rom() and nubus_register_format_block(). These will shortly be replaced with a mechanism to optionally load a declaration ROM from disk to allow real images to be used within QEMU. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-11-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- include/hw/nubus/nubus.h | 19 ------ hw/nubus/nubus-device.c | 143 --------------------------------------- 2 files changed, 162 deletions(-) diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h index 3eea2952d553..187ecc00a576 100644 --- a/include/hw/nubus/nubus.h +++ b/include/hw/nubus/nubus.h @@ -44,25 +44,6 @@ struct NubusDevice { int32_t slot; MemoryRegion super_slot_mem; MemoryRegion slot_mem; - - /* Format Block */ - - MemoryRegion fblock_io; - - uint32_t rom_length; - uint32_t rom_crc; - uint8_t rom_rev; - uint8_t rom_format; - uint8_t byte_lanes; - int32_t directory_offset; - - /* ROM */ - - MemoryRegion rom_io; - const uint8_t *rom; }; -void nubus_register_rom(NubusDevice *dev, const uint8_t *rom, uint32_t size, - int revision, int format, uint8_t byte_lanes); - #endif diff --git a/hw/nubus/nubus-device.c b/hw/nubus/nubus-device.c index 516b13d2d53d..d4932d64a278 100644 --- a/hw/nubus/nubus-device.c +++ b/hw/nubus/nubus-device.c @@ -13,147 +13,6 @@ #include "qapi/error.h" -/* The Format Block Structure */ - -#define FBLOCK_DIRECTORY_OFFSET 0 -#define FBLOCK_LENGTH 4 -#define FBLOCK_CRC 8 -#define FBLOCK_REVISION_LEVEL 12 -#define FBLOCK_FORMAT 13 -#define FBLOCK_TEST_PATTERN 14 -#define FBLOCK_RESERVED 18 -#define FBLOCK_BYTE_LANES 19 - -#define FBLOCK_SIZE 20 -#define FBLOCK_PATTERN_VAL 0x5a932bc7 - -static uint64_t nubus_fblock_read(void *opaque, hwaddr addr, unsigned int size) -{ - NubusDevice *dev = opaque; - uint64_t val; - -#define BYTE(v, b) (((v) >> (24 - 8 * (b))) & 0xff) - switch (addr) { - case FBLOCK_BYTE_LANES: - val = dev->byte_lanes; - val |= (val ^ 0xf) << 4; - break; - case FBLOCK_RESERVED: - val = 0x00; - break; - case FBLOCK_TEST_PATTERN...FBLOCK_TEST_PATTERN + 3: - val = BYTE(FBLOCK_PATTERN_VAL, addr - FBLOCK_TEST_PATTERN); - break; - case FBLOCK_FORMAT: - val = dev->rom_format; - break; - case FBLOCK_REVISION_LEVEL: - val = dev->rom_rev; - break; - case FBLOCK_CRC...FBLOCK_CRC + 3: - val = BYTE(dev->rom_crc, addr - FBLOCK_CRC); - break; - case FBLOCK_LENGTH...FBLOCK_LENGTH + 3: - val = BYTE(dev->rom_length, addr - FBLOCK_LENGTH); - break; - case FBLOCK_DIRECTORY_OFFSET...FBLOCK_DIRECTORY_OFFSET + 3: - val = BYTE(dev->directory_offset, addr - FBLOCK_DIRECTORY_OFFSET); - break; - default: - val = 0; - break; - } - return val; -} - -static void nubus_fblock_write(void *opaque, hwaddr addr, uint64_t val, - unsigned int size) -{ - /* read only */ -} - -static const MemoryRegionOps nubus_format_block_ops = { - .read = nubus_fblock_read, - .write = nubus_fblock_write, - .endianness = DEVICE_BIG_ENDIAN, - .valid = { - .min_access_size = 1, - .max_access_size = 1, - } -}; - -static void nubus_register_format_block(NubusDevice *dev) -{ - char *fblock_name; - - fblock_name = g_strdup_printf("nubus-slot-%d-format-block", - dev->slot); - - hwaddr fblock_offset = memory_region_size(&dev->slot_mem) - FBLOCK_SIZE; - memory_region_init_io(&dev->fblock_io, NULL, &nubus_format_block_ops, - dev, fblock_name, FBLOCK_SIZE); - memory_region_add_subregion(&dev->slot_mem, fblock_offset, - &dev->fblock_io); - - g_free(fblock_name); -} - -static void mac_nubus_rom_write(void *opaque, hwaddr addr, uint64_t val, - unsigned int size) -{ - /* read only */ -} - -static uint64_t mac_nubus_rom_read(void *opaque, hwaddr addr, - unsigned int size) -{ - NubusDevice *dev = opaque; - - return dev->rom[addr]; -} - -static const MemoryRegionOps mac_nubus_rom_ops = { - .read = mac_nubus_rom_read, - .write = mac_nubus_rom_write, - .endianness = DEVICE_BIG_ENDIAN, - .valid = { - .min_access_size = 1, - .max_access_size = 1, - }, -}; - - -void nubus_register_rom(NubusDevice *dev, const uint8_t *rom, uint32_t size, - int revision, int format, uint8_t byte_lanes) -{ - hwaddr rom_offset; - char *rom_name; - - /* FIXME : really compute CRC */ - dev->rom_length = 0; - dev->rom_crc = 0; - - dev->rom_rev = revision; - dev->rom_format = format; - - dev->byte_lanes = byte_lanes; - dev->directory_offset = -size; - - /* ROM */ - - dev->rom = rom; - rom_name = g_strdup_printf("nubus-slot-%d-rom", dev->slot); - memory_region_init_io(&dev->rom_io, NULL, &mac_nubus_rom_ops, - dev, rom_name, size); - memory_region_set_readonly(&dev->rom_io, true); - - rom_offset = memory_region_size(&dev->slot_mem) - FBLOCK_SIZE + - dev->directory_offset; - memory_region_add_subregion(&dev->slot_mem, rom_offset, &dev->rom_io); - - g_free(rom_name); -} - static void nubus_device_realize(DeviceState *dev, Error **errp) { NubusBus *nubus = NUBUS_BUS(qdev_get_parent_bus(dev)); @@ -179,8 +38,6 @@ static void nubus_device_realize(DeviceState *dev, Error **errp) memory_region_add_subregion(&nubus->slot_io, slot_offset, &nd->slot_mem); g_free(name); - - nubus_register_format_block(nd); } static Property nubus_device_properties[] = { From patchwork Wed Sep 29 09:28:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534292 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBSs4PjNz9ssD for ; Wed, 29 Sep 2021 19:50:37 +1000 (AEST) Received: from localhost ([::1]:53768 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVWEV-0007CT-Az for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:50:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44934) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtX-0001re-Il for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:55 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:33455) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtT-0005ll-E1 for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:55 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1N1OsF-1mz7LG3GW3-012qBU; Wed, 29 Sep 2021 11:28:49 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 11/20] nubus-device: add romfile property for loading declaration ROMs Date: Wed, 29 Sep 2021 11:28:34 +0200 Message-Id: <20210929092843.2686234-12-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:/6Go44XtxVtAhV6TJ5xSTXUZwLeyrmnqhrO9UeNXOP65BP9mxuY lMjeZKjVc4vHWxoFH9O5ZPiIZyggXeVrmAJvgHlAgrW8QR3JcEr90JKJ4Wxdm+nA6VKc9D0 AVWNUWvIINLFvHurMZoSzKmw86eM30K1u8PAz1AU3a4aZNIWdmTSu/Izfz+fWA7KZVUEiyu NIipFH7PAMeHqGcjMH4tA== X-UI-Out-Filterresults: notjunk:1;V03:K0:wYpntaaVRqs=:UnTFoqEIgct6ysMnSz/WRA aqAkvvVo9zxNB3ntOO1e37eUGa3ZeiIDa0q599sFEiK6nODHfc2D6vbwmGQ0zgBXNqZaL6Hjm kjyuwXJU+qFf26V6gxj2nMD5xw/G4X9i8rnYZyFIf6MUKZUrO3ZKnUme/rta2GMW5OKOK1+Ew 8aNDDGMGa0fVbYPZnX7hCu4DwYxycP9XrwzgJgkL8KaZxa1czZMGkAh5jHbDEiRYJ0Tzj+bGy myaLpetpRoFS8nWa0rURhtsglEyIuT4CelRpXo0GPUIPu8vQnirvj2sskmeyTuTsjUlrE/LwG Up+3A7+RYPafgVgajyd1QQ40S09aMv9lzafEv9sF5tJeMbGVcMeB6N529T1dz+q/bI12gv/fG 8WZb4KQ8ABK5vqJ+r0XNSB40l7T4ICnoiIN+/Df3uVt/Upp4zgSTbTWsQVM0yiVpr1SzbFOx1 O6WPOM/UHzEYjwaKSbj3J3U/hUjfAUs1lrR38E4VPqtOC1bfz9gAUHxiCxgfQPrGuK6oUb6Gs amFkiAZp7Jii3hzSE3qM6syo4mBWEGNpD5VV3RbrgInOP/KE5ebuC55pWbcX8POOycvoPkzmE 0yCaclYBkJVKPMfLc0Z9bmbKLWAxaOJf91eaFZWLhFdPX6wFJQXs5Ypogr8MntsYPrE4eT49h WNrTH0GiRFO//3Gq3lE+agRsuLGoa2F6P2fcu0N+RREe7xuaTDFOTpCdSEI3H+G0bUt9nrpR9 R7/QqfuoMqzlo+32YUeHdrHxD1x3E2zuZGJ0dw== Received-SPF: none client-ip=212.227.126.187; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland The declaration ROM is located at the top-most address of the standard slot space. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-12-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- include/hw/nubus/nubus.h | 6 ++++++ hw/nubus/nubus-device.c | 44 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h index 187ecc00a576..343be958417a 100644 --- a/include/hw/nubus/nubus.h +++ b/include/hw/nubus/nubus.h @@ -12,6 +12,7 @@ #include "hw/qdev-properties.h" #include "exec/address-spaces.h" #include "qom/object.h" +#include "qemu/units.h" #define NUBUS_SUPER_SLOT_SIZE 0x10000000U #define NUBUS_SUPER_SLOT_NB 0xe @@ -38,12 +39,17 @@ struct NubusBus { uint16_t slot_available_mask; }; +#define NUBUS_DECL_ROM_MAX_SIZE (128 * KiB) + struct NubusDevice { DeviceState qdev; int32_t slot; MemoryRegion super_slot_mem; MemoryRegion slot_mem; + + char *romfile; + MemoryRegion decl_rom; }; #endif diff --git a/hw/nubus/nubus-device.c b/hw/nubus/nubus-device.c index d4932d64a278..280f40e88a30 100644 --- a/hw/nubus/nubus-device.c +++ b/hw/nubus/nubus-device.c @@ -9,16 +9,21 @@ */ #include "qemu/osdep.h" +#include "qemu/datadir.h" +#include "hw/loader.h" #include "hw/nubus/nubus.h" #include "qapi/error.h" +#include "qemu/error-report.h" static void nubus_device_realize(DeviceState *dev, Error **errp) { NubusBus *nubus = NUBUS_BUS(qdev_get_parent_bus(dev)); NubusDevice *nd = NUBUS_DEVICE(dev); - char *name; + char *name, *path; hwaddr slot_offset; + int64_t size; + int ret; /* Super */ slot_offset = nd->slot * NUBUS_SUPER_SLOT_SIZE; @@ -38,10 +43,47 @@ static void nubus_device_realize(DeviceState *dev, Error **errp) memory_region_add_subregion(&nubus->slot_io, slot_offset, &nd->slot_mem); g_free(name); + + /* Declaration ROM */ + if (nd->romfile != NULL) { + path = qemu_find_file(QEMU_FILE_TYPE_BIOS, nd->romfile); + if (path == NULL) { + path = g_strdup(nd->romfile); + } + + size = get_image_size(path); + if (size < 0) { + error_setg(errp, "failed to find romfile \"%s\"", nd->romfile); + g_free(path); + return; + } else if (size == 0) { + error_setg(errp, "romfile \"%s\" is empty", nd->romfile); + g_free(path); + return; + } else if (size > NUBUS_DECL_ROM_MAX_SIZE) { + error_setg(errp, "romfile \"%s\" too large (maximum size 128K)", + nd->romfile); + g_free(path); + return; + } + + name = g_strdup_printf("nubus-slot-%x-declaration-rom", nd->slot); + memory_region_init_rom(&nd->decl_rom, OBJECT(dev), name, size, + &error_abort); + ret = load_image_mr(path, &nd->decl_rom); + g_free(path); + if (ret < 0) { + error_setg(errp, "could not load romfile \"%s\"", nd->romfile); + return; + } + memory_region_add_subregion(&nd->slot_mem, NUBUS_SLOT_SIZE - size, + &nd->decl_rom); + } } static Property nubus_device_properties[] = { DEFINE_PROP_INT32("slot", NubusDevice, slot, -1), + DEFINE_PROP_STRING("romfile", NubusDevice, romfile), DEFINE_PROP_END_OF_LIST() }; From patchwork Wed Sep 29 09:28:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534283 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBHw6Wjlz9ssD for ; Wed, 29 Sep 2021 19:42:52 +1000 (AEST) Received: from localhost ([::1]:35964 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVW70-0003MF-NX for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:42:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44980) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtY-0001vL-Tg for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:57 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:50545) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtX-0005nE-05 for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:56 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MfYc4-1n2dic0zqC-00g09D; Wed, 29 Sep 2021 11:28:50 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 12/20] nubus: move nubus to its own 32-bit address space Date: Wed, 29 Sep 2021 11:28:35 +0200 Message-Id: <20210929092843.2686234-13-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:7CvuLKVXITNH7Lgq5L2h3O9UPRpkiuY7M9OoiX1W2TvwhATG8OH H5HpDsEMDMsGU12DFbm3pD5ZlMGykIcRk0tsfETreQZdxhfoYkWCYW58+6B1xXSSptQ+88G AbbO6aNMclatxiSf3sP7Sr6lWy7MQoB/2jiNsAdt1pMvp9HnE/QnRDNP/JvMJpkeVieFPlI oo6iZA9kimWsUDeJGfVrg== X-UI-Out-Filterresults: notjunk:1;V03:K0:9+/VBJDAUVY=:DR58mU65kRyOXBvD1ED343 M2ahRN7JzdfnpozmRzEcksuvMnBVMcKPs9zHpgmtpewlWqlinutKxC6SXK8vlY3+znEKbDg6B 3AeBoyyitUG7RQQbD/gm/QHXf9C++ympwaXxsPc1dIkKwuIFLXToUnIZMqyTMNlasl+w2E8wl mz3+bARKPcChECRV8av4TKyWQiOrecLrMZ1yciJSRIQYO0QhcudlUjB35volOb5Gk3GGXAT8g VrU/K1hDJJVdeZFbEoUx3E5KlvsojN8OVIEhl3k2dYLt/nAW66Ksl6hIpIR3evtU3xDo3z0YM zbO6araVL8PHNohH2DGnlfugrR5TlUDpetqR9UhWkKZjWyIsUebFu8JVY2TNdyJXUVkDADoj3 xRQCLvGpN8pwGhLVRYNGWJQ1Rbz7b76TEc0Ofu9Gr8rW6lbFoYepbf+XhPcJRcq1OaPlii5kl /eDP35Uxrj1+Q/NDuTQjZgWTezcz3pWAmTtif2MiBWGS+k977TqGM/QPLLFCnB1aLWKMhBuuI uU0VHrtEN61RjVPH/YfZ2KCzQIHXzNDuZjbbmRwEfwRE8vc9znpM4qrABBkoMaYYgmPmbOyjm O4WooFB6ex7wUhbdKa3jDoWO5FW5mexbwPjlDP/1UT5/Rfj4aDWSqmYuPle4hyesCFJnzarnp ZSeeiptmpuR17zFE1nZ8yXecLUBFqx0t/F1r3XNGL4MF+7Pl1VLQCGpRfQ5R/fOmCGuCGJ4kb Gn3afqesF5w3gAFSaCUi3+r8iQ7lEByH5Nk9MQ== Received-SPF: none client-ip=212.227.126.131; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland According to "Designing Cards and Drivers for the Macintosh Family" the Nubus has its own 32-bit address space based upon physical slot addressing. Move Nubus to its own 32-bit address space and then use memory region aliases to map available slot and super slot ranges into the q800 system address space via the Macintosh Nubus bridge. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-13-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- include/hw/nubus/mac-nubus-bridge.h | 2 ++ include/hw/nubus/nubus.h | 6 ++++++ hw/m68k/q800.c | 9 ++++----- hw/nubus/mac-nubus-bridge.c | 16 ++++++++++++++-- hw/nubus/nubus-bus.c | 18 ++++++++++++++++++ 5 files changed, 44 insertions(+), 7 deletions(-) diff --git a/include/hw/nubus/mac-nubus-bridge.h b/include/hw/nubus/mac-nubus-bridge.h index 118d67267dd5..04451d357c50 100644 --- a/include/hw/nubus/mac-nubus-bridge.h +++ b/include/hw/nubus/mac-nubus-bridge.h @@ -23,6 +23,8 @@ struct MacNubusState { SysBusDevice sysbus_dev; NubusBus *bus; + MemoryRegion super_slot_alias; + MemoryRegion slot_alias; }; #endif diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h index 343be958417a..9f9386afeda5 100644 --- a/include/hw/nubus/nubus.h +++ b/include/hw/nubus/nubus.h @@ -17,6 +17,9 @@ #define NUBUS_SUPER_SLOT_SIZE 0x10000000U #define NUBUS_SUPER_SLOT_NB 0xe +#define NUBUS_SLOT_BASE (NUBUS_SUPER_SLOT_SIZE * \ + (NUBUS_SUPER_SLOT_NB + 1)) + #define NUBUS_SLOT_SIZE 0x01000000 #define NUBUS_FIRST_SLOT 0x0 #define NUBUS_LAST_SLOT 0xf @@ -33,6 +36,9 @@ OBJECT_DECLARE_SIMPLE_TYPE(NubusBus, NUBUS_BUS) struct NubusBus { BusState qbus; + AddressSpace nubus_as; + MemoryRegion nubus_mr; + MemoryRegion super_slot_io; MemoryRegion slot_io; diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 5ba87f789c78..a07912b87ca3 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -67,9 +67,6 @@ #define ASC_BASE (IO_BASE + 0x14000) #define SWIM_BASE (IO_BASE + 0x1E000) -#define NUBUS_SUPER_SLOT_BASE 0x60000000 -#define NUBUS_SLOT_BASE 0xf0000000 - #define SONIC_PROM_SIZE 0x1000 /* @@ -396,8 +393,10 @@ static void q800_init(MachineState *machine) dev = qdev_new(TYPE_MAC_NUBUS_BRIDGE); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, NUBUS_SUPER_SLOT_BASE); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, NUBUS_SLOT_BASE); + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, + MAC_NUBUS_FIRST_SLOT * NUBUS_SUPER_SLOT_SIZE); + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, NUBUS_SLOT_BASE + + MAC_NUBUS_FIRST_SLOT * NUBUS_SLOT_SIZE); nubus = MAC_NUBUS_BRIDGE(dev)->bus; diff --git a/hw/nubus/mac-nubus-bridge.c b/hw/nubus/mac-nubus-bridge.c index 3f075789e9b3..3af4f5d396ae 100644 --- a/hw/nubus/mac-nubus-bridge.c +++ b/hw/nubus/mac-nubus-bridge.c @@ -22,8 +22,20 @@ static void mac_nubus_bridge_init(Object *obj) s->bus->slot_available_mask = MAKE_64BIT_MASK(MAC_NUBUS_FIRST_SLOT, MAC_NUBUS_SLOT_NB); - sysbus_init_mmio(sbd, &s->bus->super_slot_io); - sysbus_init_mmio(sbd, &s->bus->slot_io); + /* Aliases for slots 0x9 to 0xe */ + memory_region_init_alias(&s->super_slot_alias, obj, "super-slot-alias", + &s->bus->nubus_mr, + MAC_NUBUS_FIRST_SLOT * NUBUS_SUPER_SLOT_SIZE, + MAC_NUBUS_SLOT_NB * NUBUS_SUPER_SLOT_SIZE); + + memory_region_init_alias(&s->slot_alias, obj, "slot-alias", + &s->bus->nubus_mr, + NUBUS_SLOT_BASE + + MAC_NUBUS_FIRST_SLOT * NUBUS_SLOT_SIZE, + MAC_NUBUS_SLOT_NB * NUBUS_SLOT_SIZE); + + sysbus_init_mmio(sbd, &s->super_slot_alias); + sysbus_init_mmio(sbd, &s->slot_alias); } static void mac_nubus_bridge_class_init(ObjectClass *klass, void *data) diff --git a/hw/nubus/nubus-bus.c b/hw/nubus/nubus-bus.c index 215fdb6b4ec2..07c279bde5c1 100644 --- a/hw/nubus/nubus-bus.c +++ b/hw/nubus/nubus-bus.c @@ -78,25 +78,42 @@ static const MemoryRegionOps nubus_super_slot_ops = { }, }; +static void nubus_unrealize(BusState *bus) +{ + NubusBus *nubus = NUBUS_BUS(bus); + + address_space_destroy(&nubus->nubus_as); +} + static void nubus_realize(BusState *bus, Error **errp) { + NubusBus *nubus = NUBUS_BUS(bus); + if (!nubus_find()) { error_setg(errp, "at most one %s device is permitted", TYPE_NUBUS_BUS); return; } + + address_space_init(&nubus->nubus_as, &nubus->nubus_mr, "nubus"); } static void nubus_init(Object *obj) { NubusBus *nubus = NUBUS_BUS(obj); + memory_region_init(&nubus->nubus_mr, obj, "nubus", 0x100000000); + memory_region_init_io(&nubus->super_slot_io, obj, &nubus_super_slot_ops, nubus, "nubus-super-slots", (NUBUS_SUPER_SLOT_NB + 1) * NUBUS_SUPER_SLOT_SIZE); + memory_region_add_subregion(&nubus->nubus_mr, 0x0, &nubus->super_slot_io); memory_region_init_io(&nubus->slot_io, obj, &nubus_slot_ops, nubus, "nubus-slots", NUBUS_SLOT_NB * NUBUS_SLOT_SIZE); + memory_region_add_subregion(&nubus->nubus_mr, + (NUBUS_SUPER_SLOT_NB + 1) * + NUBUS_SUPER_SLOT_SIZE, &nubus->slot_io); nubus->slot_available_mask = MAKE_64BIT_MASK(NUBUS_FIRST_SLOT, NUBUS_SLOT_NB); @@ -150,6 +167,7 @@ static void nubus_class_init(ObjectClass *oc, void *data) BusClass *bc = BUS_CLASS(oc); bc->realize = nubus_realize; + bc->unrealize = nubus_unrealize; bc->check_address = nubus_check_address; bc->get_dev_path = nubus_get_dev_path; } From patchwork Wed Sep 29 09:28:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534298 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBfJ0cmVz9svs for ; Wed, 29 Sep 2021 19:58:48 +1000 (AEST) Received: from localhost ([::1]:38662 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVWMP-0007q6-T2 for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:58:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45048) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtd-00025K-JG for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:01 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:45985) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtb-0005qy-QV for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:01 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MSss2-1mOPgC3Ofu-00UKBJ; Wed, 29 Sep 2021 11:28:50 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 13/20] nubus-bridge: introduce separate NubusBridge structure Date: Wed, 29 Sep 2021 11:28:36 +0200 Message-Id: <20210929092843.2686234-14-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:Lg8Z1iGA3KPkCIlwHTB5bBe25wexSR15HTwS0on+TGggeJAsQ3h DMjbBZNhBbC99J9Oz9jyZXieEsSom/SmxumwoErIm4wMoPS4mlrflSNsbO13t0yoSHb5Z7d sj0DqsU4WxTyuXce9UUfiQU7xd1zhMPnC8Ve+0iornc8a+AP//YB5kUAeyGh2oWede7mq9O HIKR126grci6y3pm8mPFQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:YH5JxX6XYmA=:fH4OBXInCUDZaPB3CWpmal Isk9n4/mM3DYH+KQXKX0D+V6kowaqL/CRCAekbWhuS0tT3s3VfecVLFSapPM9f548ZgDtuuZ8 59+VXqUkMUH8co3u3s/KgjA6aA0N0+3zPRx6kFZZIMKe0v6AEDjQpgG5wD5ddnvDjyskbeDNn ovhCLPeF5oUYOyMONE2hFTzK86N383gHCFKHgofCGh81rtfRBavMUpYdTRPUGrKLjmKM7pn8n 5O26D4Fe79sEeXC1jN+ovMZIrkWima9239cosWVAoDY4XztC66tL/uVh4c5vem+KaCKUDUK9i 9qemiBIlO8fP5UH2Tu/YV1iRm6pEiwuqjPP8uyIlBWTluL32AaK5t52SIR/zMP6Ng9g6hKjqk uf4DTh7+EUqogOc/L8/6DWcNTqq5wDwwHPTmBIl0YNsP3hg9keuoi2zvVM7ZOfLRrRj3N5kuN MVHF0dWPA4TdPBC7/NKdIzwSMMo5BatUn+5pGnXqFkEBDkKjUDae+Zw6BrRYrFWA7pxvnhCBN nNy3/t8IwgnQIsjzkGffVX/fgUR/ZDaY0ao/Eu+ekuLl3b+cNrxUO6/EykfwSJW2pOXLVZ6bK TDSP5D/uNtwEPKPWFkAo+XreiC7DYescUHraD5cFrvw/06TBESOf31U1sfkjCOGkd3jGHZfxL ftWUKrt8CEBOtGb0KLwzMQG5iGwPPsqvHxtFJVLboTt+x9cEXjQppiFjhQvosYT0w0IIaHfcG SsncRjIRVmgEdMqJJGFddpKag9g8Ld2Qc2EjXw== Received-SPF: none client-ip=212.227.126.130; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland This is to allow the Nubus bridge to store its own additional state. Also update the comment in the file header to reflect that nubus-bridge is not specific to the Macintosh. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-14-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- include/hw/nubus/mac-nubus-bridge.h | 2 +- include/hw/nubus/nubus.h | 6 ++++++ hw/nubus/nubus-bridge.c | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/hw/nubus/mac-nubus-bridge.h b/include/hw/nubus/mac-nubus-bridge.h index 04451d357c50..fa454f5fbe83 100644 --- a/include/hw/nubus/mac-nubus-bridge.h +++ b/include/hw/nubus/mac-nubus-bridge.h @@ -20,7 +20,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(MacNubusState, MAC_NUBUS_BRIDGE) struct MacNubusState { - SysBusDevice sysbus_dev; + NubusBridge parent_obj; NubusBus *bus; MemoryRegion super_slot_alias; diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h index 9f9386afeda5..11bcc9bb3647 100644 --- a/include/hw/nubus/nubus.h +++ b/include/hw/nubus/nubus.h @@ -10,6 +10,7 @@ #define HW_NUBUS_NUBUS_H #include "hw/qdev-properties.h" +#include "hw/sysbus.h" #include "exec/address-spaces.h" #include "qom/object.h" #include "qemu/units.h" @@ -32,6 +33,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(NubusDevice, NUBUS_DEVICE) OBJECT_DECLARE_SIMPLE_TYPE(NubusBus, NUBUS_BUS) #define TYPE_NUBUS_BRIDGE "nubus-bridge" +OBJECT_DECLARE_SIMPLE_TYPE(NubusBridge, NUBUS_BRIDGE); struct NubusBus { BusState qbus; @@ -58,4 +60,8 @@ struct NubusDevice { MemoryRegion decl_rom; }; +struct NubusBridge { + SysBusDevice parent_obj; +}; + #endif diff --git a/hw/nubus/nubus-bridge.c b/hw/nubus/nubus-bridge.c index cd8c6a91eb53..95662568c518 100644 --- a/hw/nubus/nubus-bridge.c +++ b/hw/nubus/nubus-bridge.c @@ -1,5 +1,5 @@ /* - * QEMU Macintosh Nubus + * QEMU Nubus * * Copyright (c) 2013-2018 Laurent Vivier * @@ -22,7 +22,7 @@ static void nubus_bridge_class_init(ObjectClass *klass, void *data) static const TypeInfo nubus_bridge_info = { .name = TYPE_NUBUS_BRIDGE, .parent = TYPE_SYS_BUS_DEVICE, - .instance_size = sizeof(SysBusDevice), + .instance_size = sizeof(NubusBridge), .class_init = nubus_bridge_class_init, }; From patchwork Wed Sep 29 09:28:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534295 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBb30Qz7z9ssD for ; Wed, 29 Sep 2021 19:55:59 +1000 (AEST) Received: from localhost ([::1]:33724 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVWJg-0004O2-SI for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:55:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45058) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtf-000292-9S for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:06 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:41009) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtb-0005r0-Qj for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:03 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MRTAj-1m8kD81CHF-00NUpC; Wed, 29 Sep 2021 11:28:51 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 14/20] mac-nubus-bridge: rename MacNubusState to MacNubusBridge Date: Wed, 29 Sep 2021 11:28:37 +0200 Message-Id: <20210929092843.2686234-15-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:TRnZotoJBc4fHv+JUN498gwF3x+Z+NOkgTfvIib9Y843YFmGKZX 4YixF6Xn1ZVStW0Hnb11TVnvU2XzGzjx04upwr6tMhq2kN+/F2j0IhOwWJJV0+9wp/lKpz8 Y+njlH2V9eo6+UMCcdNLRV1DuQEdHDoCBI+6uwQaZ1L3oGYjc8nljDq4m6dnqq81GXq1ELT A8YJ79sNkQ2jdALneoo8w== X-UI-Out-Filterresults: notjunk:1;V03:K0:CyaVHERBFe4=:2NDQubjdEqtCa3JTfjX/nX hSzkj/rhw9Go//zoRiKhdZOuSdW/B/aaFSRMrg74tvhNnaDMsiO5Lfii8ikce/7L6wRxk0W7j fWNUwEjwXKWkFeaRiSRoDAokmWlNLilLP9eTPRVydYcUlO0t9zpAZktvPlBypzMK9KwV2QfdP Ue4pnntpHfFxWhT6v8LWLb+NbChP2R17nmJupDs7gBXS5mbp1H4EBD4g3Ux9m4hpHSzvKd7Jx DAXyGXOywr8xEXFWFs0N2xdaeEK77Z39EqVddJskaVPxTVuHR+eqeuWgj5bd5jYcBDcKMi2TL y5KSwmsoZq3OwaYyp3AkStilBcc73KQKDII9c+enGAxOEKmmbknWQnrWZmEEkZoHEcgl2oi7R QWajafR7tUkX1OXroVDWQeIFnlWiBMwcIRgK6al9UNlPPTFbVKshpBTgWUNYxR1GfH8aqCOKK 4uBNC3IEk8m50HZfZzpFcDicisALuft+JxCJWylAegODcRO+yjAX59+AIkaYaxZ/ToDLkAlVr fTRYFqZMpMmboo+BmJFD0KFGpDBdjlCS9lFfOHHysPlJLefRO5YK7sDsh4b29hb6VNRrB1w1D fuBNsqJp6hgXPxKOFq+cz5Go1af3zKPLreHSe0LE9WAPqr9rd0iqqXzDploiGKwMAthKQ98jq 6NyQofHxVp5rCT39vPhBLKlSSBhAHVBF84Op3SYMSWtoFXKJ5OgXdsC0q15NxNW8Y3pdLwCi6 GV6WN3pOUiGuvjX/sMmJSksVLCmxVtIBO92Dvw== Received-SPF: none client-ip=212.227.126.134; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland This better reflects that the mac-nubus-bridge device is derived from the nubus-bridge device, and that the structure represents the state of the bridge device and not the Nubus itself. Also update the comment in the file header to reflect that mac-nubus-bridge is specific to the Macintosh. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-15-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- include/hw/nubus/mac-nubus-bridge.h | 4 ++-- hw/nubus/mac-nubus-bridge.c | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/include/hw/nubus/mac-nubus-bridge.h b/include/hw/nubus/mac-nubus-bridge.h index fa454f5fbe83..b595e1b7ef66 100644 --- a/include/hw/nubus/mac-nubus-bridge.h +++ b/include/hw/nubus/mac-nubus-bridge.h @@ -17,9 +17,9 @@ #define MAC_NUBUS_SLOT_NB (MAC_NUBUS_LAST_SLOT - MAC_NUBUS_FIRST_SLOT + 1) #define TYPE_MAC_NUBUS_BRIDGE "mac-nubus-bridge" -OBJECT_DECLARE_SIMPLE_TYPE(MacNubusState, MAC_NUBUS_BRIDGE) +OBJECT_DECLARE_SIMPLE_TYPE(MacNubusBridge, MAC_NUBUS_BRIDGE) -struct MacNubusState { +struct MacNubusBridge { NubusBridge parent_obj; NubusBus *bus; diff --git a/hw/nubus/mac-nubus-bridge.c b/hw/nubus/mac-nubus-bridge.c index 3af4f5d396ae..e241c581b575 100644 --- a/hw/nubus/mac-nubus-bridge.c +++ b/hw/nubus/mac-nubus-bridge.c @@ -1,5 +1,7 @@ /* - * Copyright (c) 2013-2018 Laurent Vivier + * QEMU Macintosh Nubus + * + * Copyright (c) 2013-2018 Laurent Vivier * * This work is licensed under the terms of the GNU GPL, version 2 or later. * See the COPYING file in the top-level directory. @@ -13,7 +15,7 @@ static void mac_nubus_bridge_init(Object *obj) { - MacNubusState *s = MAC_NUBUS_BRIDGE(obj); + MacNubusBridge *s = MAC_NUBUS_BRIDGE(obj); SysBusDevice *sbd = SYS_BUS_DEVICE(obj); s->bus = NUBUS_BUS(qbus_create(TYPE_NUBUS_BUS, DEVICE(s), NULL)); @@ -49,7 +51,7 @@ static const TypeInfo mac_nubus_bridge_info = { .name = TYPE_MAC_NUBUS_BRIDGE, .parent = TYPE_NUBUS_BRIDGE, .instance_init = mac_nubus_bridge_init, - .instance_size = sizeof(MacNubusState), + .instance_size = sizeof(MacNubusBridge), .class_init = mac_nubus_bridge_class_init, }; From patchwork Wed Sep 29 09:28:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534284 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBMQ4zSdz9ssD for ; Wed, 29 Sep 2021 19:45:54 +1000 (AEST) Received: from localhost ([::1]:43066 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVW9w-0008He-CT for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:45:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44994) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVta-0001xX-1Y for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:58 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:36003) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtX-0005nJ-2j for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:57 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1N9MYu-1mqZQF36rU-015Jx9; Wed, 29 Sep 2021 11:28:51 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 15/20] nubus: move NubusBus from mac-nubus-bridge to nubus-bridge Date: Wed, 29 Sep 2021 11:28:38 +0200 Message-Id: <20210929092843.2686234-16-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:PUN8cKMBaNIQewIMY1k+Sxcc998exwJDCWMNB8Ef5krdiSFl6UK GJgmR1ATWWIG+L39kaTxHmDV1BEMuEdsfRMxeyje8efqGqMlQqxP74tDjil8dVdnMRGPKxq 8tRGwazXuP+S7s3tVFXYz/V5XJGuFjZXc7aJ8y753/aSfwCqHiWKsdgHuBvxoCujN+y+/sG bYRHjgeAa/T7bXOPIIIBg== X-UI-Out-Filterresults: notjunk:1;V03:K0:jcL8i+KjOoo=:4A7yEr5mOMDXon77oavvo2 z9YzjSLAxWHNhgsfDwo2BcIMBz2Cganw8QAq69CMvrJ1vqyLxFbgExeyPUGuY2Lt8+TndcgMY 1vjAOVDhEkGl8AFOPMy4Lw75X5PH93mimbk6uTqx7Fd5s9tm2f6Ip6Vkw5ACgVUUV2qyI0xRn x/7qTTpXol53S0OgRVz0kyqtNx0kGwCb9ytqa/ndaBS2IMTfTvzL2DUn1PFa7NJ/b0/MbAIvu X2d8FNG1387XIEORtvlKiWqym6arWB4QYYhIsyYh/4XJKyVi9NcddZ7mf2rgA2NNiGx+tzvD0 y4uR1h8t0TUm0xgaljZ6tv6Pexsi0oOLo61kgyA7goO8KCmJHYtkLJ0TQUHUtRmcR401GfELM spr7AK6dbodIo3x8OgHEa40B2MOb0Gcftx31iJn5NTBqSVAM/BDQdiYOXvoaQ8BS2PqQCEdKN 4T4tuc336aKzTas0T30nARQ7KnX4VvyuUtDLhpOA61AvZXfRpWB++5Ng0OS1VeLjC5Sv6Nq2y c27dmjTNn+qurCiUzMnksdIiQ6wTWaOOWMsT1dur54ctiGjBwBNmhwVSneFkOM9HpV2H0+o9c jQdSXXZGpue/K/AH6FWWLkQt83wvgWuIj1lWIvRdooT6ycWBlHvu7EII2nJUoA7D9RztlhVye E1AzJkAi1QF5bXguis7CAeGwG9IUjCzp2EmEJn3bOFJYVhacPcxh9UUTZ/e5pIFMTf4werjJF U1Yqdij0ep3DJginom8O2uSwRFkSIDOeKbTM9g== Received-SPF: none client-ip=212.227.126.131; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: 0 X-Spam_score: 0.0 X-Spam_bar: / X-Spam_report: (0.0 / 5.0 requ) RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland Now that Nubus has its own address space rather than mapping directly into the system bus, move the Nubus reference from MacNubusBridge to NubusBridge. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-16-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- include/hw/nubus/mac-nubus-bridge.h | 1 - include/hw/nubus/nubus.h | 2 ++ hw/m68k/q800.c | 2 +- hw/nubus/mac-nubus-bridge.c | 11 +++++------ hw/nubus/nubus-bridge.c | 9 +++++++++ 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/include/hw/nubus/mac-nubus-bridge.h b/include/hw/nubus/mac-nubus-bridge.h index b595e1b7ef66..70ab50ab2d67 100644 --- a/include/hw/nubus/mac-nubus-bridge.h +++ b/include/hw/nubus/mac-nubus-bridge.h @@ -22,7 +22,6 @@ OBJECT_DECLARE_SIMPLE_TYPE(MacNubusBridge, MAC_NUBUS_BRIDGE) struct MacNubusBridge { NubusBridge parent_obj; - NubusBus *bus; MemoryRegion super_slot_alias; MemoryRegion slot_alias; }; diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h index 11bcc9bb3647..2d00d1815060 100644 --- a/include/hw/nubus/nubus.h +++ b/include/hw/nubus/nubus.h @@ -62,6 +62,8 @@ struct NubusDevice { struct NubusBridge { SysBusDevice parent_obj; + + NubusBus *bus; }; #endif diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index a07912b87ca3..9bdea1a36297 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -398,7 +398,7 @@ static void q800_init(MachineState *machine) sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, NUBUS_SLOT_BASE + MAC_NUBUS_FIRST_SLOT * NUBUS_SLOT_SIZE); - nubus = MAC_NUBUS_BRIDGE(dev)->bus; + nubus = NUBUS_BRIDGE(dev)->bus; /* framebuffer in nubus slot #9 */ diff --git a/hw/nubus/mac-nubus-bridge.c b/hw/nubus/mac-nubus-bridge.c index e241c581b575..db8640eed262 100644 --- a/hw/nubus/mac-nubus-bridge.c +++ b/hw/nubus/mac-nubus-bridge.c @@ -16,22 +16,21 @@ static void mac_nubus_bridge_init(Object *obj) { MacNubusBridge *s = MAC_NUBUS_BRIDGE(obj); + NubusBridge *nb = NUBUS_BRIDGE(obj); SysBusDevice *sbd = SYS_BUS_DEVICE(obj); - s->bus = NUBUS_BUS(qbus_create(TYPE_NUBUS_BUS, DEVICE(s), NULL)); - /* Macintosh only has slots 0x9 to 0xe available */ - s->bus->slot_available_mask = MAKE_64BIT_MASK(MAC_NUBUS_FIRST_SLOT, - MAC_NUBUS_SLOT_NB); + nb->bus->slot_available_mask = MAKE_64BIT_MASK(MAC_NUBUS_FIRST_SLOT, + MAC_NUBUS_SLOT_NB); /* Aliases for slots 0x9 to 0xe */ memory_region_init_alias(&s->super_slot_alias, obj, "super-slot-alias", - &s->bus->nubus_mr, + &nb->bus->nubus_mr, MAC_NUBUS_FIRST_SLOT * NUBUS_SUPER_SLOT_SIZE, MAC_NUBUS_SLOT_NB * NUBUS_SUPER_SLOT_SIZE); memory_region_init_alias(&s->slot_alias, obj, "slot-alias", - &s->bus->nubus_mr, + &nb->bus->nubus_mr, NUBUS_SLOT_BASE + MAC_NUBUS_FIRST_SLOT * NUBUS_SLOT_SIZE, MAC_NUBUS_SLOT_NB * NUBUS_SLOT_SIZE); diff --git a/hw/nubus/nubus-bridge.c b/hw/nubus/nubus-bridge.c index 95662568c518..3b68d4435c58 100644 --- a/hw/nubus/nubus-bridge.c +++ b/hw/nubus/nubus-bridge.c @@ -12,6 +12,14 @@ #include "hw/sysbus.h" #include "hw/nubus/nubus.h" + +static void nubus_bridge_init(Object *obj) +{ + NubusBridge *s = NUBUS_BRIDGE(obj); + + s->bus = NUBUS_BUS(qbus_create(TYPE_NUBUS_BUS, DEVICE(s), NULL)); +} + static void nubus_bridge_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); @@ -22,6 +30,7 @@ static void nubus_bridge_class_init(ObjectClass *klass, void *data) static const TypeInfo nubus_bridge_info = { .name = TYPE_NUBUS_BRIDGE, .parent = TYPE_SYS_BUS_DEVICE, + .instance_init = nubus_bridge_init, .instance_size = sizeof(NubusBridge), .class_init = nubus_bridge_class_init, }; From patchwork Wed Sep 29 09:28:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534294 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBXJ1nHZz9ssD for ; Wed, 29 Sep 2021 19:53:36 +1000 (AEST) Received: from localhost ([::1]:58294 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVWHO-0001wb-0d for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:53:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44988) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtZ-0001vq-Cm for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:57 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:33901) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtX-0005nN-KE for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:28:57 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1N0nzR-1mi4xd0nTB-00wpdu; Wed, 29 Sep 2021 11:28:52 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 16/20] nubus-bridge: embed the NubusBus object directly within nubus-bridge Date: Wed, 29 Sep 2021 11:28:39 +0200 Message-Id: <20210929092843.2686234-17-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:3xyjHGV2Rwq2vTo1joSr1ycR780K5KeTyKFCsQ8U+yoN39TeIZj Az37OYBBlf6nQkd3CK59647dMgvOpCxXJb8uqWM70jWv3sU1tZlP1cw7brwQDGQocZomU05 W57XGBxoFygb3rhSUNf59Exwt6UiTyZPcUDh5Gz69L8hLjz692QQu2GNfpOpxdJggDM+mi1 O3INKU6KoGtNsF7dCCsxA== X-UI-Out-Filterresults: notjunk:1;V03:K0:NG0Xb/0zORc=:TYzJV9FfJNU0eK66J+I4eQ BktPYhQ996BRMvpFABfTQuUZoPtLAFqHt3WGSovGpl24ohNVbq3YZ3llVkosyVn8JF/TiBzDm g8uoEZfdFXYUq2zbBiAUsC+HC3Sf8x56mTfqg3CnMCnbw7lLxuWNdV6/F4cIAfmnVLZTLydPv fc9//kA0OwKVgc58lF6fW5n9l6n16FsUbfhRv12FUeG9sAPaPlBR+pNEViexgP+tDNy1LpVYa uOwUwjHoOGf03iqf6mO8vIxU0nL1e5FDkwpq6zltSQJzhQJ2K6bBqUrZqcJNEvLzsbu39uUwh B3IUTREgoeCqthPeskz2P2rETVZkM5fcTFxJzaXzhT0vkEyUdkdsmTzLhA7gBOvEIJ0WFqOCf uAeB5rJ4DAnA4CXNi3yA6qTyesdYPbTCdsRBHF+1lcFCbgAUoqA8riQc/rDItejRpuFDz3RSa kV/w0BSn3ABxPQrOtXeIzBRK9vrlLpeUpEG2XtYTpZGJDWhBGrarg444iKtEyw7usz9fDy4yy AZlBY1eQ0ZANxmwabHrIGpEkSn8a12ixJsMG6YNpwsPpiHvYeRHIUSUaA5YNM013p2bcD+LD+ h2XmzOm25PmJtZIqTPE+qAbEOsHQN7gRWmxNREQbnQyGalDcLOajUidvsyljQAoJTYX1iKh8g JiWOJ3T7nDDRGv06HklXpA9PN1ByAhFcTYV3ATDYNn1ghf0IJfue/LWa1RrISUnsETF1PZcy2 oUfwtSG4DW3Oojvfx0q3RREb1QIhiMzcKF/EFA== Received-SPF: none client-ip=212.227.126.187; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland Since nubus-bridge is a container for NubusBus then it should be embedded directly within the bridge device using qbus_create_inplace(). Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-17-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- include/hw/nubus/nubus.h | 2 +- hw/m68k/q800.c | 2 +- hw/nubus/mac-nubus-bridge.c | 9 +++++---- hw/nubus/nubus-bridge.c | 3 ++- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h index 2d00d1815060..63c69a7586fc 100644 --- a/include/hw/nubus/nubus.h +++ b/include/hw/nubus/nubus.h @@ -63,7 +63,7 @@ struct NubusDevice { struct NubusBridge { SysBusDevice parent_obj; - NubusBus *bus; + NubusBus bus; }; #endif diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 9bdea1a36297..074acf4fdc75 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -398,7 +398,7 @@ static void q800_init(MachineState *machine) sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, NUBUS_SLOT_BASE + MAC_NUBUS_FIRST_SLOT * NUBUS_SLOT_SIZE); - nubus = NUBUS_BRIDGE(dev)->bus; + nubus = &NUBUS_BRIDGE(dev)->bus; /* framebuffer in nubus slot #9 */ diff --git a/hw/nubus/mac-nubus-bridge.c b/hw/nubus/mac-nubus-bridge.c index db8640eed262..a0da5a8b2faf 100644 --- a/hw/nubus/mac-nubus-bridge.c +++ b/hw/nubus/mac-nubus-bridge.c @@ -18,19 +18,20 @@ static void mac_nubus_bridge_init(Object *obj) MacNubusBridge *s = MAC_NUBUS_BRIDGE(obj); NubusBridge *nb = NUBUS_BRIDGE(obj); SysBusDevice *sbd = SYS_BUS_DEVICE(obj); + NubusBus *bus = &nb->bus; /* Macintosh only has slots 0x9 to 0xe available */ - nb->bus->slot_available_mask = MAKE_64BIT_MASK(MAC_NUBUS_FIRST_SLOT, - MAC_NUBUS_SLOT_NB); + bus->slot_available_mask = MAKE_64BIT_MASK(MAC_NUBUS_FIRST_SLOT, + MAC_NUBUS_SLOT_NB); /* Aliases for slots 0x9 to 0xe */ memory_region_init_alias(&s->super_slot_alias, obj, "super-slot-alias", - &nb->bus->nubus_mr, + &bus->nubus_mr, MAC_NUBUS_FIRST_SLOT * NUBUS_SUPER_SLOT_SIZE, MAC_NUBUS_SLOT_NB * NUBUS_SUPER_SLOT_SIZE); memory_region_init_alias(&s->slot_alias, obj, "slot-alias", - &nb->bus->nubus_mr, + &bus->nubus_mr, NUBUS_SLOT_BASE + MAC_NUBUS_FIRST_SLOT * NUBUS_SLOT_SIZE, MAC_NUBUS_SLOT_NB * NUBUS_SLOT_SIZE); diff --git a/hw/nubus/nubus-bridge.c b/hw/nubus/nubus-bridge.c index 3b68d4435c58..1adda7f5a609 100644 --- a/hw/nubus/nubus-bridge.c +++ b/hw/nubus/nubus-bridge.c @@ -16,8 +16,9 @@ static void nubus_bridge_init(Object *obj) { NubusBridge *s = NUBUS_BRIDGE(obj); + NubusBus *bus = &s->bus; - s->bus = NUBUS_BUS(qbus_create(TYPE_NUBUS_BUS, DEVICE(s), NULL)); + qbus_create_inplace(bus, sizeof(s->bus), TYPE_NUBUS_BUS, DEVICE(s), NULL); } static void nubus_bridge_class_init(ObjectClass *klass, void *data) From patchwork Wed Sep 29 09:28:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534293 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBX71Z1qz9ssD for ; Wed, 29 Sep 2021 19:53:25 +1000 (AEST) Received: from localhost ([::1]:57594 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVWHC-0001Si-0d for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:53:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45092) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVth-000298-TP for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:07 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:52149) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtf-0005tu-DR for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:05 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MFsIZ-1mbnh52jhn-00HLlU; Wed, 29 Sep 2021 11:28:52 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 17/20] nubus-bridge: make slot_available_mask a qdev property Date: Wed, 29 Sep 2021 11:28:40 +0200 Message-Id: <20210929092843.2686234-18-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:eez8eukwqbtoR2kUc/QwB0UrrA09Mk1K/YSDhY154iCYJwPvdDd sgcvsaYAQ1pYzbn7ZixAu2gDjynfdzEKiHW5oHWuU6xNI4laXvnAxkhgzRe+ni8TnJAsjxy hVJlx0ktfCzMKsaf+p6+wc28F1KKEHflI4JmX+v8Ul7nFAcZQOmjMJyY8D/aWAptmBZXSAt ZlLe45gj4yjB4FO/8wr/w== X-UI-Out-Filterresults: notjunk:1;V03:K0:qT21YRm5jpw=:+CB5vNaJ2MzuOAXv7UfdE4 0Q9agFJeFYnSL9F16mKhXhtDNy6WeDZffwso0sXgVxOftMWX54UlffExLXuB4kj9U0c7vh+oB 8wbprBbqPiUyuk66sjlZaF/Fd03yKdL1ESt6CQFc2ClPIUu26NMjSahXYTKY+6qH/qQTQQtpa 0OaMpPES7KVXfdi+z5WC4gfDsM4LLSkO6soOM3Z8W9SnDSuzUbIOQb/GyAErBiDABg/v30JpL EBiYfNdNuV5eRZUnU/LlHUNsqZNOoT5oTIdnPAKj6yTc88wAkCK0r2ltLe/PSKUNJJTFOGwDd qGZuz3dFoz9qcOpNWZyyQzKlJpHrSFsyYROPspTBMvuWJQtxtJtmg5NNgExK7yWSRZ1ohz52a jrdjQInQaDHd4ZLz+7Xen3TNaIR37gUiumVq70d+K55fOTIBWa9IOuEMOxGV1HhlkA9llSxNj eRDqL5SWapGYYNwXH9+CEOpabCYRDtRZksZ3zkbOeQPXwOTV7YQOOTjzAoFhA3CPSFX9FAsl6 KTzobjZ5drh+6JZKMTOcLk0KZoe5rfqdf6tLnlKM4lHxx4mzjMizJ1LWxiRs0Je6O+Z7oHVG8 7iYt/k7rP/Hq43zqTpCOGiqm7g35Wr1WP7fxfdohYLib+v5OIOaXwu8WZE17qA3D62+LQwJ7c H8ey/Kv7yss/NQAcYUQqejmTC7t53+uNrVuXixlwPSkAHVHvJeQqbJAWTl4S5o5vF5k/JMuac Snfg+h/Ulmdn4nSoI42GSTK6FajZ184z6qd/dA== Received-SPF: none client-ip=212.227.126.135; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland This is to allow Macintosh machines to further specify which slots are available since the number of addressable slots may not match the number of physical slots present in the machine. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20210924073808.1041-18-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- hw/nubus/nubus-bridge.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/nubus/nubus-bridge.c b/hw/nubus/nubus-bridge.c index 1adda7f5a609..7b51722f66ec 100644 --- a/hw/nubus/nubus-bridge.c +++ b/hw/nubus/nubus-bridge.c @@ -21,11 +21,18 @@ static void nubus_bridge_init(Object *obj) qbus_create_inplace(bus, sizeof(s->bus), TYPE_NUBUS_BUS, DEVICE(s), NULL); } +static Property nubus_bridge_properties[] = { + DEFINE_PROP_UINT16("slot-available-mask", NubusBridge, + bus.slot_available_mask, 0xffff), + DEFINE_PROP_END_OF_LIST() +}; + static void nubus_bridge_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); dc->fw_name = "nubus"; + device_class_set_props(dc, nubus_bridge_properties); } static const TypeInfo nubus_bridge_info = { From patchwork Wed Sep 29 09:28:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534275 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKB2V6xcLz9ssD for ; Wed, 29 Sep 2021 19:31:14 +1000 (AEST) Received: from localhost ([::1]:39748 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVVvk-0003Uq-LS for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:31:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45086) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVth-000297-GN for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:07 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:50865) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVte-0005tp-SS for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:05 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MOz8O-1mAg9Z0ulQ-00PQdT; Wed, 29 Sep 2021 11:28:53 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 18/20] nubus: add support for slot IRQs Date: Wed, 29 Sep 2021 11:28:41 +0200 Message-Id: <20210929092843.2686234-19-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:4Kl6eUsDr6mpSmMOfN9LcXb1a3u5HpkiO75U7rNwxNWBgj0pkVB hp0tsvI2eattxWS7GhQ/i4kfium9Eus+ZNQbI/RQB+Iw/78qrBq2Dhpg9p+fBYS5jg9qfGf vMTNyrZvv1GADoWnaChwDpSsUxUK79VFdD0edcJee5YkVBG9xxnKgOZpPoZScoMzD2zHBoj jYd+jZ8VRtB+qFLR+zPCg== X-UI-Out-Filterresults: notjunk:1;V03:K0:ee64jy5aEog=:5Z6gBXhLeJj7rop/0LHQUa JOAE3T9WyhPFqPk7slPd1xyBdg7u0mGIubTHSfSktHtDjnqfL2TLpJ1cIQFvoeJ3NpcovhsjD vrWgnJPx2dQ013Km5VwyjTFMaVNDSlLKbZ/iivJDODZcusgkcJfTT5aUEdr5RgJ1GN+5lyXOh xoS3FcPMm0Wt/JlsRrQ5cmCOw4sMUK4UgaMpSoynhuvsV4wXdJpMf8Xn6cV90C5N7T1gL2WDg t9b2a+Mbev10ryYON5BMr0EzFwonA+xKro1kyPFfaw9/Wop+gBVnVu+FDBqneMdRc4pVQQWMN z6x0F4a+cEtBsRL7u4WSsp6eJ6ppMSAbVvk6/mv4GxZyrxkOgRIVM2RAO/6QQ0sAukNro7m0i EalqmWEGt/OuCtyruCdS1KOngIkFT4n/AWRFaaK8hJTQWn/pYaC1ur9H7ctXLwNjD78R+5t9h Zl3dujkz/qFOttv1sVJwJEMgU6X1Cu9E+/wJ2xos31t1El0yGTh0SbjA5DYzA/Sfv+Ni2BqUE D9IUsVPI2zf9AJFb9u43JN9CM534Ah/n0jNhcPhlZjvucB9L7NRGLFfh6Z3s9WKC+tvfA5CsX /swle0imr1L7zhtVuy0iXhPKn2Tbr4m6EtjloGK8wFL+CEAlG2Atj+IVBpQInmrrETFqjCHP0 McVSnTK289JL00SHAPgnd0FFec4xnNRIwfnL6HpiIIIrZt9CtjeAkdwT45Y6ZiY/aDuWLg0k1 wDwNPkW/suTmasw1ROyJFw6Qn0eA8ON7qjqMmg== Received-SPF: none client-ip=212.227.126.130; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland Each Nubus slot has an IRQ line that can be used to request service from the CPU. Connect the IRQs to the Nubus bridge so that they can be wired up using qdev gpios accordingly, and introduce a new nubus_set_irq() function that can be used by Nubus devices to control the slot IRQ. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20210924073808.1041-19-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- include/hw/nubus/nubus.h | 6 ++++++ hw/nubus/nubus-bridge.c | 2 ++ hw/nubus/nubus-device.c | 8 ++++++++ 3 files changed, 16 insertions(+) diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h index 63c69a7586fc..b3b4d2eadb4b 100644 --- a/include/hw/nubus/nubus.h +++ b/include/hw/nubus/nubus.h @@ -26,6 +26,8 @@ #define NUBUS_LAST_SLOT 0xf #define NUBUS_SLOT_NB (NUBUS_LAST_SLOT - NUBUS_FIRST_SLOT + 1) +#define NUBUS_IRQS 16 + #define TYPE_NUBUS_DEVICE "nubus-device" OBJECT_DECLARE_SIMPLE_TYPE(NubusDevice, NUBUS_DEVICE) @@ -45,6 +47,8 @@ struct NubusBus { MemoryRegion slot_io; uint16_t slot_available_mask; + + qemu_irq irqs[NUBUS_IRQS]; }; #define NUBUS_DECL_ROM_MAX_SIZE (128 * KiB) @@ -60,6 +64,8 @@ struct NubusDevice { MemoryRegion decl_rom; }; +void nubus_set_irq(NubusDevice *nd, int level); + struct NubusBridge { SysBusDevice parent_obj; diff --git a/hw/nubus/nubus-bridge.c b/hw/nubus/nubus-bridge.c index 7b51722f66ec..c517a8a7047b 100644 --- a/hw/nubus/nubus-bridge.c +++ b/hw/nubus/nubus-bridge.c @@ -19,6 +19,8 @@ static void nubus_bridge_init(Object *obj) NubusBus *bus = &s->bus; qbus_create_inplace(bus, sizeof(s->bus), TYPE_NUBUS_BUS, DEVICE(s), NULL); + + qdev_init_gpio_out(DEVICE(s), bus->irqs, NUBUS_IRQS); } static Property nubus_bridge_properties[] = { diff --git a/hw/nubus/nubus-device.c b/hw/nubus/nubus-device.c index 280f40e88a30..0f1852f671eb 100644 --- a/hw/nubus/nubus-device.c +++ b/hw/nubus/nubus-device.c @@ -10,12 +10,20 @@ #include "qemu/osdep.h" #include "qemu/datadir.h" +#include "hw/irq.h" #include "hw/loader.h" #include "hw/nubus/nubus.h" #include "qapi/error.h" #include "qemu/error-report.h" +void nubus_set_irq(NubusDevice *nd, int level) +{ + NubusBus *nubus = NUBUS_BUS(qdev_get_parent_bus(DEVICE(nd))); + + qemu_set_irq(nubus->irqs[nd->slot], level); +} + static void nubus_device_realize(DeviceState *dev, Error **errp) { NubusBus *nubus = NUBUS_BUS(qdev_get_parent_bus(dev)); From patchwork Wed Sep 29 09:28:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534277 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKB6v1fgLz9ssD for ; Wed, 29 Sep 2021 19:35:01 +1000 (AEST) Received: from localhost ([::1]:47066 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVVzO-000061-Cq for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 05:34:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45110) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVtk-0002BF-IA for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:08 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:51057) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVti-0005wZ-Kp for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:08 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MNcYX-1mCbIT47xL-00P5dl; Wed, 29 Sep 2021 11:28:55 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 19/20] q800: wire up nubus IRQs Date: Wed, 29 Sep 2021 11:28:42 +0200 Message-Id: <20210929092843.2686234-20-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:wjb4GEAEu3mxz3dqWc7ncrr8Lk6xDRkOYv11AnReZzaEwqrfXyW mFdvyyV871kOjrfUe0WXT9vin5QambjWXqkwlblD+JAI2jAUfis0jNP4aI/ljCi5RmyqD6K nLT9effwAwXbVmCm0fk7pk8gAuBLxF/KTrQ8uj2MnQF7Itvop7MXQbQpkuSruoDTme2hmXg vHCA1i3IxyrSZC1Qqv44A== X-UI-Out-Filterresults: notjunk:1;V03:K0:XhtQASqi0CQ=:uBGwyGWHvp0UsMQGZCVkPc F5doLZbN+O0cnLrGXFwEilMxoZKyUy9qKH6YikVn92ByskD8sdnajlKq0dWWnedu7EjpJGnGS flzvREezaNw8T0HHZjc/GEwd91Zd0ZmiLmFSdEc292O2aqaktU1uH7TMYZdarn180HRpYkpuN tGD39vKrHDIftapT8Tp0HWc1PX2F9c7MOCM0EPb+BX6kUpuqgWEZ9gHP12XfQVXqk7gUVyHFU 7n/dermW1uBGQn+ifwc9Ss+VI6/88wCUOPUHqKlRG28EHUesSeescmpa8nlW1MG+PQOJUcPWs gWqC8Qil1FxKHASXl9eFZVJ9sIsIXRDlvYtKgoXfIMefW3Sxe21eiHWfv48jpzSUoTMZpmcxI pOHiSb2yEDmeBcHz27YFOxSFq/wiktJE7jm3MhPW/w7ghoOsDiCOomX6T7rYgVoOfVLrcPN3g 7wB4+bERP0vpw4S45ZWMvRdMu9fzi4tlXiIqVkLQCop6q1qt19cfBt6OduB05M8X6AmMfQsjx ZkWWaa4aS/sppoiU/ohz3ANPTqK2MMtWWLy4owRrbcVWyC2OCMfTKpguJp222dKOsNTTH3DP7 /S/W51BP9dRtXYmSboUfixh+LsXj7ScxvXAB1eE9YOK/atjYAX+jjWouWn8YIRMCRlOh+aD0U Dtqvbf8Q5mhaTNDd7sOZVutx+diXlFJGsZNwsgo2VmyIWODBYId+e3zrnSnyVDSWoxdniPkMX eaOCjeG+rFwGhd0t2pm201TMq2cH1AFWDXiKHQ== Received-SPF: none client-ip=217.72.192.73; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland Nubus IRQs are routed to the CPU through the VIA2 device so wire up the IRQs using gpios accordingly. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-20-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- hw/m68k/q800.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 074acf4fdc75..5bc9df58a097 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -398,6 +398,12 @@ static void q800_init(MachineState *machine) sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, NUBUS_SLOT_BASE + MAC_NUBUS_FIRST_SLOT * NUBUS_SLOT_SIZE); + for (i = 0; i < VIA2_NUBUS_IRQ_NB; i++) { + qdev_connect_gpio_out(dev, 9 + i, + qdev_get_gpio_in_named(via2_dev, "nubus-irq", + VIA2_NUBUS_IRQ_9 + i)); + } + nubus = &NUBUS_BRIDGE(dev)->bus; /* framebuffer in nubus slot #9 */ From patchwork Wed Sep 29 09:28:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1534300 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HKBgt3ST6z9svs for ; Wed, 29 Sep 2021 20:00:10 +1000 (AEST) Received: from localhost ([::1]:42366 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVWNj-000215-W0 for incoming@patchwork.ozlabs.org; Wed, 29 Sep 2021 06:00:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45128) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVto-0002DX-Oa for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:12 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:51661) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVVti-0005wY-T3 for qemu-devel@nongnu.org; Wed, 29 Sep 2021 05:29:12 -0400 Received: from quad ([82.142.21.142]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mj7yt-1mzbqU26Mv-00fEHL; Wed, 29 Sep 2021 11:28:55 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 20/20] q800: configure nubus available slots for Quadra 800 Date: Wed, 29 Sep 2021 11:28:43 +0200 Message-Id: <20210929092843.2686234-21-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210929092843.2686234-1-laurent@vivier.eu> References: <20210929092843.2686234-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:egVA/8lf+F+q1qlgLRDbn/Vz28u9WL2DoeccI9LpOZZ4iovXENY kJy4HcaeU+uDu2i/XdleSxAWzL1W/U2TaGTBKZ8PuAOcd+RdJIXPgko2WpXhvTTF4jAMXmg WaEl0JvBZSuH3PV8aTKzUP7NIhhWANpHKczSRYITwQXH0KR6jsoyC3cMjt/j0BFiS3F1wpJ WCewONqBjigq4Youqox3w== X-UI-Out-Filterresults: notjunk:1;V03:K0:2fFB+24ELDk=:S78h6xdVJAGDO73rX+lXeF KZfKO/1P7xVExprTGu4Y0GbTus6Ymr/UiEidnVkaaMxiKkvGvN50Paa1kGMrZ9laQg+A5OWYR LF4TJ7mmS2s4RATjmbwlqDNtjrv/Hs8xs7vc1KuzhN+sdSXogCKSQglbQTqqQW/DxxrAldFVY IzcogzmBjYxINwFwFOS7/nvtbrU8z87JxT0UKb3h21DCb4tqv4TVRuGNrfWT9WrtlyX4/yRdr YTJbl2l5fGB9wt7GQsKXi0bKDGx0IMz8kZGG//Qlilm3wQDd2bXiKb3fxUGQbyCT5wa7BOU4U aAVj3f+pGz3o9KcXVx/fJBjV42s6/m/gMYOQivSK1vkWO5nOT8jlHLoRqU1OQG7Pod9WK7Trd eeKb73AoarXV/+RA4AXC22ZuYhiPNM2gPwLNAES9vKvG9og6WaFxZzcsSyOYQqdBv5B9pq68W 8jS2Jy2iM9r6SrM3nGSJJHAWuiSNzVhrb491V6GjvCYLWPly9tAgClovhAtzSIM0hii8gx+DW YlA5Cj0hEbYug/xUn2q0heDby8o3pY48WYUOr8CRX8Y84QPwuF9AbKAAgE2r8ioT8QorBtRff ZmRsMa1nJDNdvGaVc30b1jk9n8l8z3qAktyJsQBN2nOn2uDCvBYs8+DxRqT8dK7bJghi/fLlP qPDWf/EScQkiJb6mZxNR7Zol/KS1SHMcMva8UGaEqKPZ+EX9IgVHUBG0U2zV0fawmAew7G6FO rt4YmSFrErO7wJHZwqyfYYb01pJFwIu/JInKmA== Received-SPF: none client-ip=217.72.192.73; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Cave-Ayland , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Mark Cave-Ayland Slot 0x9 is reserved for use by the in-built framebuffer whilst only slots 0xc, 0xd and 0xe physically exist on the Quadra 800. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210924073808.1041-21-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier --- hw/m68k/q800.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 5bc9df58a097..09b336602482 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -78,6 +78,13 @@ #define MAC_CLOCK 3686418 +/* + * Slot 0x9 is reserved for use by the in-built framebuffer whilst only + * slots 0xc, 0xd and 0xe physically exist on the Quadra 800 + */ +#define Q800_NUBUS_SLOTS_AVAILABLE (BIT(0x9) | BIT(0xc) | BIT(0xd) | \ + BIT(0xe)) + /* * The GLUE (General Logic Unit) is an Apple custom integrated circuit chip * that performs a variety of functions (RAM management, clock generation, ...). @@ -392,6 +399,8 @@ static void q800_init(MachineState *machine) /* NuBus */ dev = qdev_new(TYPE_MAC_NUBUS_BRIDGE); + qdev_prop_set_uint32(dev, "slot-available-mask", + Q800_NUBUS_SLOTS_AVAILABLE); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, MAC_NUBUS_FIRST_SLOT * NUBUS_SUPER_SLOT_SIZE);