qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: BALATON Zoltan <balaton@eik.bme.hu>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
Cc: Huacai Chen <chenhuacai@kernel.org>, qemu-devel@nongnu.org
Subject: Re: [PATCH v2 08/13] vt82c686: Move creation of ISA devices to the ISA bridge
Date: Sun, 10 Jan 2021 01:43:15 +0100 (CET)	[thread overview]
Message-ID: <5c5ce8b9-f5c4-c58d-6f8a-76c47ad8db4d@eik.bme.hu> (raw)
In-Reply-To: <f77d6471-d19d-a1c2-e447-18181d55ba86@amsat.org>

[-- Attachment #1: Type: text/plain, Size: 6310 bytes --]

On Sun, 10 Jan 2021, Philippe Mathieu-Daudé wrote:
> Hi Zoltan,
>
> On 1/9/21 9:16 PM, BALATON Zoltan wrote:
>> Currently the ISA devices that are part of the VIA south bridge,
>> superio chip are wired up by board code. Move creation of these ISA
>> devices to the VIA ISA bridge model so that board code does not need
>> to access ISA bus. This also allows vt82c686b-superio to be made
>> internal to vt82c686 which allows implementing its configuration via
>> registers in subseqent commits.
>
> Is this patch dependent of the VT82C686B_PM changes
> or can it be applied before them?

I don't know but why would that be better? I thought it's clearer to clean 
up pm related parts first before moving more stuff to this file so that's 
why this patch comes after (and also because that's the order I did it).

>> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
>> ---
>>  hw/isa/vt82c686.c   | 20 ++++++++++++++++++++
>>  hw/mips/fuloong2e.c | 29 +++++------------------------
>>  2 files changed, 25 insertions(+), 24 deletions(-)
>>
>> diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
>> index 58c0bba1d0..5df9be8ff4 100644
>> --- a/hw/isa/vt82c686.c
>> +++ b/hw/isa/vt82c686.c
>> @@ -16,6 +16,11 @@
>>  #include "hw/qdev-properties.h"
>>  #include "hw/isa/isa.h"
>>  #include "hw/isa/superio.h"
>> +#include "hw/intc/i8259.h"
>> +#include "hw/irq.h"
>> +#include "hw/dma/i8257.h"
>> +#include "hw/timer/i8254.h"
>> +#include "hw/rtc/mc146818rtc.h"
>>  #include "migration/vmstate.h"
>>  #include "hw/isa/apm.h"
>>  #include "hw/acpi/acpi.h"
>> @@ -307,9 +312,16 @@ OBJECT_DECLARE_SIMPLE_TYPE(VT82C686BISAState, VT82C686B_ISA)
>>
>>  struct VT82C686BISAState {
>>      PCIDevice dev;
>> +    qemu_irq cpu_intr;
>>      SuperIOConfig superio_cfg;
>>  };
>>
>> +static void via_isa_request_i8259_irq(void *opaque, int irq, int level)
>> +{
>> +    VT82C686BISAState *s = opaque;
>> +    qemu_set_irq(s->cpu_intr, level);
>> +}
>> +
>>  static void vt82c686b_write_config(PCIDevice *d, uint32_t addr,
>>                                     uint32_t val, int len)
>>  {
>> @@ -365,10 +377,18 @@ static void vt82c686b_realize(PCIDevice *d, Error **errp)
>>      VT82C686BISAState *s = VT82C686B_ISA(d);
>>      DeviceState *dev = DEVICE(d);
>>      ISABus *isa_bus;
>> +    qemu_irq *isa_irq;
>>      int i;
>>
>> +    qdev_init_gpio_out(dev, &s->cpu_intr, 1);
>
> Why not use the SysBus API?

How? This is a PCIDevice not a SysBusDevice.

>> +    isa_irq = qemu_allocate_irqs(via_isa_request_i8259_irq, s, 1);
>>      isa_bus = isa_bus_new(dev, get_system_memory(), pci_address_space_io(d),
>>                            &error_fatal);
>
> Isn't it get_system_memory() -> pci_address_space(d)?

I don't really know. Most other places that create an isa bus seem to also 
use get_system_memory(), only piix4 uses pci_address_space(dev) so I 
thought if those others are OK this should be too.

Regards,
BALATON Zoltan

>> +    isa_bus_irqs(isa_bus, i8259_init(isa_bus, *isa_irq));
>> +    i8254_pit_init(isa_bus, 0x40, 0, NULL);
>> +    i8257_dma_init(isa_bus, 0);
>> +    isa_create_simple(isa_bus, TYPE_VT82C686B_SUPERIO);
>> +    mc146818_rtc_init(isa_bus, 2000, NULL);
>>
>>      for (i = 0; i < PCI_CONFIG_HEADER_SIZE; i++) {
>>          if (i < PCI_COMMAND || i >= PCI_REVISION_ID) {
>> diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c
>> index fbdd6122b3..0fc3288556 100644
>> --- a/hw/mips/fuloong2e.c
>> +++ b/hw/mips/fuloong2e.c
>> @@ -25,9 +25,6 @@
>>  #include "qapi/error.h"
>>  #include "cpu.h"
>>  #include "hw/clock.h"
>> -#include "hw/intc/i8259.h"
>> -#include "hw/dma/i8257.h"
>> -#include "hw/isa/superio.h"
>>  #include "net/net.h"
>>  #include "hw/boards.h"
>>  #include "hw/i2c/smbus_eeprom.h"
>> @@ -38,13 +35,13 @@
>>  #include "qemu/log.h"
>>  #include "hw/loader.h"
>>  #include "hw/ide/pci.h"
>> +#include "hw/qdev-properties.h"
>>  #include "elf.h"
>>  #include "hw/isa/vt82c686.h"
>> -#include "hw/rtc/mc146818rtc.h"
>> -#include "hw/timer/i8254.h"
>>  #include "exec/address-spaces.h"
>>  #include "sysemu/qtest.h"
>>  #include "sysemu/reset.h"
>> +#include "sysemu/sysemu.h"
>>  #include "qemu/error-report.h"
>>
>>  #define ENVP_PADDR              0x2000
>> @@ -224,26 +221,13 @@ static void main_cpu_reset(void *opaque)
>>  }
>>
>>  static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq intc,
>> -                                       I2CBus **i2c_bus, ISABus **p_isa_bus)
>> +                                       I2CBus **i2c_bus)
>>  {
>> -    qemu_irq *i8259;
>> -    ISABus *isa_bus;
>>      PCIDevice *dev;
>>
>>      dev = pci_create_simple_multifunction(pci_bus, PCI_DEVFN(slot, 0), true,
>>                                            TYPE_VT82C686B_ISA);
>> -    isa_bus = ISA_BUS(qdev_get_child_bus(DEVICE(dev), "isa.0"));
>> -    assert(isa_bus);
>> -    *p_isa_bus = isa_bus;
>> -    /* Interrupt controller */
>> -    /* The 8259 -> IP5  */
>> -    i8259 = i8259_init(isa_bus, intc);
>> -    isa_bus_irqs(isa_bus, i8259);
>> -    /* init other devices */
>> -    i8254_pit_init(isa_bus, 0x40, 0, NULL);
>> -    i8257_dma_init(isa_bus, 0);
>> -    /* Super I/O */
>> -    isa_create_simple(isa_bus, TYPE_VT82C686B_SUPERIO);
>> +    qdev_connect_gpio_out(DEVICE(dev), 0, intc);
>>
>>      dev = pci_create_simple(pci_bus, PCI_DEVFN(slot, 1), "via-ide");
>>      pci_ide_create_devs(dev);
>> @@ -290,7 +274,6 @@ static void mips_fuloong2e_init(MachineState *machine)
>>      uint64_t kernel_entry;
>>      PCIDevice *pci_dev;
>>      PCIBus *pci_bus;
>> -    ISABus *isa_bus;
>>      I2CBus *smbus;
>>      Clock *cpuclk;
>>      MIPSCPU *cpu;
>> @@ -357,7 +340,7 @@ static void mips_fuloong2e_init(MachineState *machine)
>>
>>      /* South bridge -> IP5 */
>>      vt82c686b_southbridge_init(pci_bus, FULOONG2E_VIA_SLOT, env->irq[5],
>> -                               &smbus, &isa_bus);
>> +                               &smbus);
>>
>>      /* GPU */
>>      if (vga_interface_type != VGA_NONE) {
>> @@ -372,8 +355,6 @@ static void mips_fuloong2e_init(MachineState *machine)
>>      spd_data = spd_data_generate(DDR, machine->ram_size);
>>      smbus_eeprom_init_one(smbus, 0x50, spd_data);
>>
>> -    mc146818_rtc_init(isa_bus, 2000, NULL);
>> -
>>      /* Network card: RTL8139D */
>>      network_init(pci_bus);
>>  }
>>
>
>

  reply	other threads:[~2021-01-10  0:44 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-09 20:16 [PATCH v2 00/13] vt82c686b clean ups and vt8231 emulation BALATON Zoltan
2021-01-09 20:16 ` [PATCH v2 04/13] vt82c686: Fix up power management io base and config BALATON Zoltan
2021-02-20 18:58   ` Philippe Mathieu-Daudé
2021-02-20 22:33     ` BALATON Zoltan
2021-01-09 20:16 ` [PATCH v2 02/13] vt82c686: Reorganise code BALATON Zoltan
2021-01-09 20:16 ` [PATCH v2 08/13] vt82c686: Move creation of ISA devices to the ISA bridge BALATON Zoltan
2021-01-10  0:21   ` Philippe Mathieu-Daudé
2021-01-10  0:43     ` BALATON Zoltan [this message]
2021-01-10 11:34       ` Philippe Mathieu-Daudé
2021-01-10 19:25         ` BALATON Zoltan
2021-01-11  1:38           ` Jiaxun Yang
2021-01-11 10:28             ` BALATON Zoltan
2021-01-25 17:57               ` Philippe Mathieu-Daudé
2021-02-01 20:04           ` BALATON Zoltan
2021-02-04 12:35             ` Jiaxun Yang
2021-02-04 13:10               ` BALATON Zoltan
2021-02-09 16:55             ` BALATON Zoltan
2021-02-17 20:36               ` BALATON Zoltan
2021-01-09 20:16 ` [PATCH v2 03/13] vt82c686: Fix SMBus IO base and configuration registers BALATON Zoltan
2021-01-12 12:54   ` Jiaxun Yang
2021-01-12 22:25     ` BALATON Zoltan
2021-01-13  2:24       ` Jiaxun Yang
2021-01-09 20:16 ` [PATCH v2 13/13] vt82c686: Add emulation of VT8231 south bridge BALATON Zoltan
2021-01-09 20:16 ` [PATCH v2 09/13] vt82c686: Fix superio_cfg_{read,write}() functions BALATON Zoltan
2021-02-20 19:24   ` Philippe Mathieu-Daudé
2021-02-20 22:00     ` BALATON Zoltan
2021-01-09 20:16 ` [PATCH v2 01/13] vt82c686: Move superio memory region to SuperIOConfig struct BALATON Zoltan
2021-01-10  0:06   ` Philippe Mathieu-Daudé
2021-01-13  2:26   ` Jiaxun Yang
2021-01-09 20:16 ` [PATCH v2 05/13] vt82c686: Set user_creatable=false for VT82C686B_PM BALATON Zoltan
2021-01-09 23:41   ` Philippe Mathieu-Daudé
2021-01-13  2:27   ` Jiaxun Yang
2021-01-09 20:16 ` [PATCH v2 07/13] vt82c686: Simplify vt82c686b_realize() BALATON Zoltan
2021-01-09 20:16 ` [PATCH v2 11/13] vt82c686: QOM-ify superio related functionality BALATON Zoltan
2021-01-09 20:16 ` [PATCH v2 12/13] vt82c686: Add VT8231_SUPERIO based on VIA_SUPERIO BALATON Zoltan
2021-01-09 20:16 ` [PATCH v2 06/13] vt82c686: Make vt82c686b-pm an abstract base class and add vt8231-pm based on it BALATON Zoltan
2021-01-09 23:42   ` Philippe Mathieu-Daudé
2021-01-09 20:16 ` [PATCH v2 10/13] vt82c686: Implement control of serial port io ranges via config regs BALATON Zoltan
2021-02-20 19:30   ` Philippe Mathieu-Daudé
2021-02-20 22:53     ` BALATON Zoltan
2021-02-21  9:48 ` [PATCH v2 00/13] vt82c686b clean ups and vt8231 emulation Philippe Mathieu-Daudé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5c5ce8b9-f5c4-c58d-6f8a-76c47ad8db4d@eik.bme.hu \
    --to=balaton@eik.bme.hu \
    --cc=chenhuacai@kernel.org \
    --cc=f4bug@amsat.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).