[RFC PATCH v2 115/137] hw: Give allocated IRQs an owner and name

Alexander Graf <[email protected]>
Newsgroups org.nongnu.qemu-arm,org.nongnu.qemu-devel,org.nongnu.qemu-riscv
Message-ID <[email protected]>
Convert the remaining IRQ allocation calls across hw/ to the parented
form.  Owner is the enclosing device for realize()-time allocations
and the machine for board-init allocations.  Names describe the pin's
purpose; the auto-indexed [*] form is used where the same allocation
runs in a loop.

AI-used-for: code (refactoring)
Signed-off-by: Alexander Graf <[email protected]>
---
 hw/alpha/typhoon.c          | 4 ++--
 hw/char/diva-gsp.c          | 3 ++-
 hw/display/macfb.c          | 2 +-
 hw/ide/ahci.c               | 2 +-
 hw/ide/pci.c                | 2 +-
 hw/intc/sh_intc.c           | 2 +-
 hw/isa/i82378.c             | 3 ++-
 hw/isa/lpc_ich9.c           | 2 +-
 hw/m68k/mcf5206.c           | 2 +-
 hw/m68k/q800.c              | 4 ++--
 hw/mips/mips_int.c          | 2 +-
 hw/net/can/can_kvaser_pci.c | 2 +-
 hw/pci-host/pnv_phb3.c      | 3 ++-
 hw/pci-host/pnv_phb3_msi.c  | 3 ++-
 hw/pci-host/pnv_phb4.c      | 3 ++-
 hw/ppc/e500.c               | 3 ++-
 hw/ppc/pnv_lpc.c            | 2 +-
 hw/ppc/pnv_psi.c            | 6 ++++--
 hw/ppc/spapr_irq.c          | 2 +-
 hw/riscv/sifive_u.c         | 3 ++-
 hw/scsi/esp-pci.c           | 2 +-
 hw/sh4/sh7750.c             | 2 +-
 hw/sparc/sun4m.c            | 5 +++--
 hw/sparc64/sun4u.c          | 3 ++-
 hw/xen/xen-pvh-common.c     | 5 +++--
 25 files changed, 42 insertions(+), 30 deletions(-)

diff --git a/hw/alpha/typhoon.c b/hw/alpha/typhoon.c
index 671e8f89d9..bc2073bfa9 100644
--- a/hw/alpha/typhoon.c
+++ b/hw/alpha/typhoon.c
@@ -849,8 +849,8 @@ PCIBus *typhoon_init(Object *parent, MemoryRegion *ram, qemu_irq *p_isa_irq,
         }
     }
 
-    *p_isa_irq = qemu_allocate_irq_orphan(typhoon_set_isa_irq, s, 0);
-    *p_rtc_irq = qemu_allocate_irq_orphan(typhoon_set_timer_irq, s, 0);
+    *p_isa_irq = qemu_allocate_irq(parent, "isa-irq", typhoon_set_isa_irq, s, 0);
+    *p_rtc_irq = qemu_allocate_irq(parent, "rtc-irq", typhoon_set_timer_irq, s, 0);
 
     /* Main memory region, 0x00.0000.0000.  Real hardware supports 32GB,
        but the address space hole reserved at this point is 8TB.  */
diff --git a/hw/char/diva-gsp.c b/hw/char/diva-gsp.c
index bf1da1faee..b70811f24f 100644
--- a/hw/char/diva-gsp.c
+++ b/hw/char/diva-gsp.c
@@ -126,7 +126,8 @@ static void diva_pci_realize(PCIDevice *dev, Error **errp)
     pci->dev.config[PCI_INTERRUPT_PIN] = 1;
     memory_region_init(&pci->membar, OBJECT(pci), "serial_ports", 4096);
     pci_register_bar(&pci->dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &pci->membar);
-    pci->irqs = qemu_allocate_irqs_orphan(multi_serial_irq_mux, pci, di.nports);
+    pci->irqs = qemu_allocate_irqs(OBJECT(dev), "serial-irq",
+                                   multi_serial_irq_mux, pci, di.nports);
 
     for (i = 0; i < di.nports; i++) {
         s = pci->state + i;
diff --git a/hw/display/macfb.c b/hw/display/macfb.c
index de5c83884e..b59523a0ac 100644
--- a/hw/display/macfb.c
+++ b/hw/display/macfb.c
@@ -737,7 +737,7 @@ static void macfb_nubus_realize(DeviceState *dev, Error **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);
 
-    ms->irq = qemu_allocate_irq_orphan(macfb_nubus_set_irq, s, 0);
+    ms->irq = qemu_allocate_irq(OBJECT(dev), "nubus-irq", macfb_nubus_set_irq, s, 0);
 }
 
 static void macfb_nubus_unrealize(DeviceState *dev)
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index ac1cf26bab..b8f4e018b9 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -1594,7 +1594,7 @@ void ahci_realize(AHCIState *s, DeviceState *qdev, AddressSpace *as)
     assert(s->ports > 0);
     s->dev = g_new0(AHCIDevice, s->ports);
     ahci_reg_init(s);
-    irqs = qemu_allocate_irqs_orphan(ahci_irq_set, s, s->ports);
+    irqs = qemu_allocate_irqs(OBJECT(qdev), "port-irq", ahci_irq_set, s, s->ports);
     for (i = 0; i < s->ports; i++) {
         AHCIDevice *ad = &s->dev[i];
 
diff --git a/hw/ide/pci.c b/hw/ide/pci.c
index c808469008..56750b7b6f 100644
--- a/hw/ide/pci.c
+++ b/hw/ide/pci.c
@@ -606,7 +606,7 @@ void bmdma_init(IDEBus *bus, BMDMAState *bm, PCIIDEState *d)
     bm->dma.ops = &bmdma_ops;
     bus->dma = &bm->dma;
     bm->irq = bus->irq;
-    bus->irq = qemu_allocate_irq_orphan(bmdma_irq, bm, 0);
+    bus->irq = qemu_allocate_irq(OBJECT(d), "bmdma-irq[*]", bmdma_irq, bm, 0);
     bm->bus = bus;
     bm->pci_dev = d;
 }
diff --git a/hw/intc/sh_intc.c b/hw/intc/sh_intc.c
index 63f4eee2aa..4eaaeefeea 100644
--- a/hw/intc/sh_intc.c
+++ b/hw/intc/sh_intc.c
@@ -403,7 +403,7 @@ int sh_intc_init(Object *owner, MemoryRegion *sysmem,
     for (i = 0; i < nr_sources; i++) {
         desc->sources[i].parent = desc;
     }
-    desc->irqs = qemu_allocate_irqs_orphan(sh_intc_set_irq, desc, nr_sources);
+    desc->irqs = qemu_allocate_irqs(owner, "src-irq", sh_intc_set_irq, desc, nr_sources);
     memory_region_init_io(&desc->iomem, owner, &sh_intc_ops, desc, "intc",
                           0x100000000ULL);
     j = 0;
diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
index 4f0be992e0..263a0c0dcf 100644
--- a/hw/isa/i82378.c
+++ b/hw/isa/i82378.c
@@ -95,7 +95,8 @@ static void i82378_realize(PCIDevice *pci, Error **errp)
 
     /* 2 82C59 (irq) */
     s->isa_irqs_in = i8259_init(OBJECT(pci), isabus,
-                                qemu_allocate_irq_orphan(i82378_request_out0_irq,
+                                qemu_allocate_irq(OBJECT(dev), "out0-irq",
+                                                  i82378_request_out0_irq,
                                                   s, 0));
     isa_bus_register_input_irqs(isabus, s->isa_irqs_in);
 
diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
index 7cb82519fb..7b44423372 100644
--- a/hw/isa/lpc_ich9.c
+++ b/hw/isa/lpc_ich9.c
@@ -429,7 +429,7 @@ static void ich9_lpc_pm_init(ICH9LPCState *lpc)
     qemu_irq sci_irq;
     FWCfgState *fw_cfg = fw_cfg_find();
 
-    sci_irq = qemu_allocate_irq_orphan(ich9_set_sci, lpc, 0);
+    sci_irq = qemu_allocate_irq(OBJECT(lpc), "sci-irq", ich9_set_sci, lpc, 0);
     ich9_pm_init(PCI_DEVICE(lpc), &lpc->pm, sci_irq);
 
     if (lpc->smi_host_features && fw_cfg) {
diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c
index cbb361fae9..ec70d482eb 100644
--- a/hw/m68k/mcf5206.c
+++ b/hw/m68k/mcf5206.c
@@ -593,7 +593,7 @@ static void mcf5206_mbar_realize(DeviceState *dev, Error **errp)
                           "mbar", 0x00001000);
     sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->iomem);
 
-    s->pic = qemu_allocate_irqs_orphan(m5206_mbar_set_irq, s, 14);
+    s->pic = qemu_allocate_irqs(OBJECT(dev), "pic-irq", m5206_mbar_set_irq, s, 14);
     m5206_timer_init(&s->timer[0], s->pic[9]);
     m5206_timer_init(&s->timer[1], s->pic[10]);
     s->uart[0] = mcf_uart_create(OBJECT(s), s->pic[12], serial_hd(0));
diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c
index 177fff0289..677dc4ad80 100644
--- a/hw/m68k/q800.c
+++ b/hw/m68k/q800.c
@@ -474,11 +474,11 @@ static void q800_machine_init(MachineState *machine)
     sysbus_realize(sysbus, &error_fatal);
     /* SCSI and SCSI data IRQs are negative edge triggered */
     sysbus_connect_irq(sysbus, 0,
-                       qemu_irq_invert_orphan(
+                       qemu_irq_invert(OBJECT(machine), "scsi-irq-inv",
                            qdev_get_gpio_in(DEVICE(&m->via2),
                                                    VIA2_IRQ_SCSI_BIT)));
     sysbus_connect_irq(sysbus, 1,
-                       qemu_irq_invert_orphan(
+                       qemu_irq_invert(OBJECT(machine), "scsi-drq-inv",
                            qdev_get_gpio_in(DEVICE(&m->via2),
                                                    VIA2_IRQ_SCSI_DATA_BIT)));
     memory_region_add_subregion(&m->macio, ESP_BASE - IO_BASE,
diff --git a/hw/mips/mips_int.c b/hw/mips/mips_int.c
index 814d07319f..c404063762 100644
--- a/hw/mips/mips_int.c
+++ b/hw/mips/mips_int.c
@@ -56,7 +56,7 @@ void cpu_mips_irq_init_cpu(MIPSCPU *cpu)
     qemu_irq *qi;
     int i;
 
-    qi = qemu_allocate_irqs_orphan(cpu_mips_irq_request, cpu, 8);
+    qi = qemu_allocate_irqs(OBJECT(cpu), "cpu-irq", cpu_mips_irq_request, cpu, 8);
     for (i = 0; i < 8; i++) {
         env->irq[i] = qi[i];
     }
diff --git a/hw/net/can/can_kvaser_pci.c b/hw/net/can/can_kvaser_pci.c
index 69fc66de14..95bae684d6 100644
--- a/hw/net/can/can_kvaser_pci.c
+++ b/hw/net/can/can_kvaser_pci.c
@@ -224,7 +224,7 @@ static void kvaser_pci_realize(PCIDevice *pci_dev, Error **errp)
     pci_conf = pci_dev->config;
     pci_conf[PCI_INTERRUPT_PIN] = 0x01; /* interrupt pin A */
 
-    d->irq = qemu_allocate_irq_orphan(kvaser_pci_irq_handler, d, 0);
+    d->irq = qemu_allocate_irq(OBJECT(s), "kvaser-irq", kvaser_pci_irq_handler, d, 0);
 
     can_sja_init(s, d->irq);
 
diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c
index 63da48f5af..410a27a073 100644
--- a/hw/pci-host/pnv_phb3.c
+++ b/hw/pci-host/pnv_phb3.c
@@ -1054,7 +1054,8 @@ static void pnv_phb3_realize(DeviceState *dev, Error **errp)
         ics_set_irq_type(&phb->lsis, i, true);
     }
 
-    phb->qirqs = qemu_allocate_irqs_orphan(ics_set_irq, &phb->lsis, phb->lsis.nr_irqs);
+    phb->qirqs = qemu_allocate_irqs(OBJECT(dev), "lsi-irq",
+                                    ics_set_irq, &phb->lsis, phb->lsis.nr_irqs);
 
     /* MSI sources */
     object_property_set_link(OBJECT(&phb->msis), "phb", OBJECT(phb),
diff --git a/hw/pci-host/pnv_phb3_msi.c b/hw/pci-host/pnv_phb3_msi.c
index fa5f61ea2b..1bba60c616 100644
--- a/hw/pci-host/pnv_phb3_msi.c
+++ b/hw/pci-host/pnv_phb3_msi.c
@@ -267,7 +267,8 @@ static void phb3_msi_realize(DeviceState *dev, Error **errp)
         return;
     }
 
-    msi->qirqs = qemu_allocate_irqs_orphan(phb3_msi_set_irq, msi, ics->nr_irqs);
+    msi->qirqs = qemu_allocate_irqs(OBJECT(dev), "msi-irq",
+                                    phb3_msi_set_irq, msi, ics->nr_irqs);
 }
 
 static void phb3_msi_instance_init(Object *obj)
diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c
index 7a1988a2b2..9b567413c7 100644
--- a/hw/pci-host/pnv_phb4.c
+++ b/hw/pci-host/pnv_phb4.c
@@ -1605,7 +1605,8 @@ static void pnv_phb4_realize(DeviceState *dev, Error **errp)
 
     pnv_phb4_update_xsrc(phb);
 
-    phb->qirqs = qemu_allocate_irqs_orphan(xive_source_set_irq, xsrc, xsrc->nr_irqs);
+    phb->qirqs = qemu_allocate_irqs(OBJECT(dev), "lsi-irq",
+                                    xive_source_set_irq, xsrc, xsrc->nr_irqs);
 
     pnv_phb4_xscom_realize(phb);
 }
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 62692f5776..f3917c0755 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -1089,7 +1089,8 @@ void ppce500_init(MachineState *machine)
                                     sysbus_mmio_get_region(s, 0));
 
         /* Power Off GPIO at Pin 0 */
-        poweroff_irq = qemu_allocate_irq_orphan(ppce500_power_off, NULL, 0);
+        poweroff_irq = qemu_allocate_irq(OBJECT(machine), "poweroff",
+                                         ppce500_power_off, NULL, 0);
         qdev_connect_gpio_out(dev, 0, poweroff_irq);
     }
 
diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c
index e89defb321..a13d633f64 100644
--- a/hw/ppc/pnv_lpc.c
+++ b/hw/ppc/pnv_lpc.c
@@ -993,7 +993,7 @@ ISABus *pnv_lpc_isa_create(PnvLpcController *lpc, bool use_cpld, Error **errp)
     }
 
     /* POWER has a 17th irq, QEMU only implements the 16 regular device irqs */
-    irqs = qemu_allocate_irqs_orphan(handler, lpc, ISA_NUM_IRQS);
+    irqs = qemu_allocate_irqs(OBJECT(lpc), "isa-irq", handler, lpc, ISA_NUM_IRQS);
 
     isa_bus_register_input_irqs(isa_bus, irqs);
 
diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c
index 1ff33596ac..1f2148a4d3 100644
--- a/hw/ppc/pnv_psi.c
+++ b/hw/ppc/pnv_psi.c
@@ -509,7 +509,8 @@ static void pnv_psi_power8_realize(DeviceState *dev, Error **errp)
 
     qdev_init_gpio_in(dev, pnv_psi_power8_set_irq, ics->nr_irqs);
 
-    psi->qirqs = qemu_allocate_irqs_orphan(ics_set_irq, ics, ics->nr_irqs);
+    psi->qirqs = qemu_allocate_irqs(OBJECT(dev), "psi-irq",
+                                    ics_set_irq, ics, ics->nr_irqs);
 
     /* XSCOM region for PSI registers */
     pnv_xscom_region_init(&psi->xscom_regs, OBJECT(dev), &pnv_psi_xscom_ops,
@@ -872,7 +873,8 @@ static void pnv_psi_power9_realize(DeviceState *dev, Error **errp)
         xive_source_irq_set_lsi(xsrc, i);
     }
 
-    psi->qirqs = qemu_allocate_irqs_orphan(xive_source_set_irq, xsrc, xsrc->nr_irqs);
+    psi->qirqs = qemu_allocate_irqs(OBJECT(dev), "psi-irq",
+                                    xive_source_set_irq, xsrc, xsrc->nr_irqs);
 
     qdev_init_gpio_in(dev, pnv_psi_power9_set_irq, xsrc->nr_irqs);
 
diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c
index a05edb78bc..82869ea03a 100644
--- a/hw/ppc/spapr_irq.c
+++ b/hw/ppc/spapr_irq.c
@@ -339,7 +339,7 @@ void spapr_irq_init(SpaprMachineState *spapr, Error **errp)
         spapr_xive_hcall_init(spapr);
     }
 
-    spapr->qirqs = qemu_allocate_irqs_orphan(spapr_set_irq, spapr,
+    spapr->qirqs = qemu_allocate_irqs(OBJECT(spapr), "irq", spapr_set_irq, spapr,
                                       SPAPR_NR_XIRQS + SPAPR_IRQ_NR_IPIS);
 
     /*
diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c
index 3df9fafb12..3f4a9b9b7b 100644
--- a/hw/riscv/sifive_u.c
+++ b/hw/riscv/sifive_u.c
@@ -484,7 +484,8 @@ static void sifive_u_machine_init(MachineState *machine)
 
     /* register gpio-restart */
     qdev_connect_gpio_out(DEVICE(&(s->soc.gpio)), 10,
-                          qemu_allocate_irq_orphan(sifive_u_machine_reset, NULL, 0));
+                          qemu_allocate_irq(OBJECT(machine), "reset-irq",
+                                            sifive_u_machine_reset, NULL, 0));
 
     /* load/create device tree */
     if (machine->dtb) {
diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c
index 4c02b23a28..bfc61b8f3b 100644
--- a/hw/scsi/esp-pci.c
+++ b/hw/scsi/esp-pci.c
@@ -407,7 +407,7 @@ static void esp_pci_scsi_realize(PCIDevice *dev, Error **errp)
                           "esp-io", 0x80);
 
     pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_IO, &pci->io);
-    s->irq = qemu_allocate_irq_orphan(esp_irq_handler, pci, 0);
+    s->irq = qemu_allocate_irq(OBJECT(s), "esp-irq", esp_irq_handler, pci, 0);
 
     scsi_bus_init(&s->bus, sizeof(s->bus), d, &esp_pci_scsi_info);
 }
diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c
index 307daa523d..a42b753a1d 100644
--- a/hw/sh4/sh7750.c
+++ b/hw/sh4/sh7750.c
@@ -848,5 +848,5 @@ SH7750State *sh7750_init(Object *parent, SuperHCPU *cpu,
 qemu_irq sh7750_irl(SH7750State *s)
 {
     sh_intc_toggle_source(&s->intc.sources[IRL], 1, 0); /* enable */
-    return qemu_allocate_irq_orphan(sh_intc_set_irl, &s->intc.sources[IRL], 0);
+    return qemu_allocate_irq(OBJECT(s), "irl", sh_intc_set_irl, &s->intc.sources[IRL], 0);
 }
diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index 0a35b20e17..51f5468a02 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -1008,7 +1008,8 @@ static void sun4m_hw_init(MachineState *machine)
 
     if (hwdef->apc_base) {
         apc_init(OBJECT(machine), hwdef->apc_base,
-                 qemu_allocate_irq_orphan(cpu_halt_signal, NULL, 0));
+                 qemu_allocate_irq(OBJECT(machine), "cpu-halt",
+                                   cpu_halt_signal, NULL, 0));
     }
 
     if (hwdef->fd_base) {
@@ -1018,7 +1019,7 @@ static void sun4m_hw_init(MachineState *machine)
         sun4m_fdctrl_init(OBJECT(machine), slavio_irq[22], hwdef->fd_base, fd,
                           &fdc_tc);
     } else {
-        fdc_tc = qemu_allocate_irq_orphan(dummy_fdc_tc, NULL, 0);
+        fdc_tc = qemu_allocate_irq(OBJECT(machine), "fdc-tc", dummy_fdc_tc, NULL, 0);
     }
 
     slavio_misc_init(OBJECT(machine), hwdef->slavio_base, hwdef->aux1_base,
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 389436fd3d..7d84dc201f 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -311,7 +311,8 @@ static void ebus_realize(PCIDevice *pci_dev, Error **errp)
     }
 
     /* ISA bus */
-    s->isa_irqs_in = qemu_allocate_irqs_orphan(ebus_isa_irq_handler, s, ISA_NUM_IRQS);
+    s->isa_irqs_in = qemu_allocate_irqs(OBJECT(s), "isa-irq-in",
+                                        ebus_isa_irq_handler, s, ISA_NUM_IRQS);
     isa_bus_register_input_irqs(s->isa_bus, s->isa_irqs_in);
     qdev_init_gpio_out_named(DEVICE(s), s->isa_irqs_out, "isa-irq",
                              ISA_NUM_IRQS);
diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c
index 42514a599e..76893c8fcf 100644
--- a/hw/xen/xen-pvh-common.c
+++ b/hw/xen/xen-pvh-common.c
@@ -170,7 +170,7 @@ static void xen_create_virtio_mmio_devices(XenPVHMachineState *s)
      */
     for (i = s->cfg.virtio_mmio_num - 1; i >= 0; i--) {
         hwaddr base = s->cfg.virtio_mmio.base + i * s->cfg.virtio_mmio.size;
-        qemu_irq irq = qemu_allocate_irq_orphan(xen_set_irq, NULL,
+        qemu_irq irq = qemu_allocate_irq(OBJECT(s), "virtio-irq[*]", xen_set_irq, NULL,
                                          s->cfg.virtio_mmio_irq_base + i);
 
         sysbus_create_simple(OBJECT(s), "virtio-mmio[*]", "virtio-mmio",
@@ -260,7 +260,8 @@ static inline void xenpvh_gpex_init(XenPVHMachineState *s,
     assert(xpc->set_pci_intx_irq);
 
     for (i = 0; i < PCI_NUM_PINS; i++) {
-        qemu_irq irq = qemu_allocate_irq_orphan(xpc->set_pci_intx_irq, s, i);
+        qemu_irq irq = qemu_allocate_irq(OBJECT(s), "pci-intx-irq[*]",
+                                         xpc->set_pci_intx_irq, s, i);
 
         sysbus_connect_irq(SYS_BUS_DEVICE(dev), i, irq);
         gpex_set_irq_num(GPEX_HOST(dev), i, s->cfg.pci_intx_irq_base + i);
-- 
2.47.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.