* [Qemu-devel] [PATCH 1/5] configure: also symlink *.aml files
2012-12-12 9:15 [Qemu-devel] [PATCH 0/5] acpi: misc updates Gerd Hoffmann
@ 2012-12-12 9:15 ` Gerd Hoffmann
2012-12-12 9:15 ` [Qemu-devel] [PATCH 2/5] acpi: autoload dsdt Gerd Hoffmann
` (3 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Gerd Hoffmann @ 2012-12-12 9:15 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
configure | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/configure b/configure
index 38b1cc6..d35563c 100755
--- a/configure
+++ b/configure
@@ -4197,6 +4197,7 @@ FILES="$FILES pc-bios/spapr-rtas/Makefile"
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
for bios_file in \
$source_path/pc-bios/*.bin \
+ $source_path/pc-bios/*.aml \
$source_path/pc-bios/*.rom \
$source_path/pc-bios/*.dtb \
$source_path/pc-bios/openbios-* \
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH 2/5] acpi: autoload dsdt
2012-12-12 9:15 [Qemu-devel] [PATCH 0/5] acpi: misc updates Gerd Hoffmann
2012-12-12 9:15 ` [Qemu-devel] [PATCH 1/5] configure: also symlink *.aml files Gerd Hoffmann
@ 2012-12-12 9:15 ` Gerd Hoffmann
2012-12-12 9:15 ` [Qemu-devel] [PATCH 3/5] apci: assign memory regions to piix4 acpi device Gerd Hoffmann
` (2 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Gerd Hoffmann @ 2012-12-12 9:15 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/pc.c | 23 +++++++++++++++++++++++
hw/pc.h | 1 +
hw/pc_piix.c | 1 +
hw/pc_q35.c | 1 +
4 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/hw/pc.c b/hw/pc.c
index b11e7c4..cc4b260 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -886,6 +886,29 @@ void pc_cpus_init(const char *cpu_model)
}
}
+void pc_acpi_init(const char *default_dsdt)
+{
+ char *filename = NULL, *arg = NULL;
+
+ if (acpi_tables != NULL) {
+ /* manually set via -acpitable, leave it alone */
+ return;
+ }
+
+ filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, default_dsdt);
+ if (filename == NULL) {
+ fprintf(stderr, "WARNING: failed to find %s\n", default_dsdt);
+ return;
+ }
+
+ arg = g_strdup_printf("file=%s", filename);
+ if (acpi_table_add(arg) != 0) {
+ fprintf(stderr, "WARNING: failed to load %s\n", filename);
+ }
+ g_free(arg);
+ g_free(filename);
+}
+
void *pc_memory_init(MemoryRegion *system_memory,
const char *kernel_filename,
const char *kernel_cmdline,
diff --git a/hw/pc.h b/hw/pc.h
index 2237e86..9ecccbb 100644
--- a/hw/pc.h
+++ b/hw/pc.h
@@ -79,6 +79,7 @@ void pc_register_ferr_irq(qemu_irq irq);
void pc_acpi_smi_interrupt(void *opaque, int irq, int level);
void pc_cpus_init(const char *cpu_model);
+void pc_acpi_init(const char *default_dsdt);
void *pc_memory_init(MemoryRegion *system_memory,
const char *kernel_filename,
const char *kernel_cmdline,
diff --git a/hw/pc_piix.c b/hw/pc_piix.c
index 19e342a..e032474 100644
--- a/hw/pc_piix.c
+++ b/hw/pc_piix.c
@@ -87,6 +87,7 @@ static void pc_init1(MemoryRegion *system_memory,
void *fw_cfg = NULL;
pc_cpus_init(cpu_model);
+ pc_acpi_init("acpi-dsdt.aml");
if (kvmclock_enabled) {
kvmclock_create();
diff --git a/hw/pc_q35.c b/hw/pc_q35.c
index 3429a9a..7a8d6fe 100644
--- a/hw/pc_q35.c
+++ b/hw/pc_q35.c
@@ -87,6 +87,7 @@ static void pc_q35_init(QEMUMachineInitArgs *args)
qemu_irq *cmos_s3;
pc_cpus_init(cpu_model);
+ pc_acpi_init("q35-acpi-dsdt.aml");
kvmclock_create();
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH 3/5] apci: assign memory regions to piix4 acpi device
2012-12-12 9:15 [Qemu-devel] [PATCH 0/5] acpi: misc updates Gerd Hoffmann
2012-12-12 9:15 ` [Qemu-devel] [PATCH 1/5] configure: also symlink *.aml files Gerd Hoffmann
2012-12-12 9:15 ` [Qemu-devel] [PATCH 2/5] acpi: autoload dsdt Gerd Hoffmann
@ 2012-12-12 9:15 ` Gerd Hoffmann
2012-12-12 9:15 ` [Qemu-devel] [PATCH 4/5] apci: assign memory regions to ich9 lpc device Gerd Hoffmann
2012-12-12 9:15 ` [Qemu-devel] [PATCH 5/5] pc: remove bochs bios debug ports Gerd Hoffmann
4 siblings, 0 replies; 10+ messages in thread
From: Gerd Hoffmann @ 2012-12-12 9:15 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Get rid of get_system_io() usage.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/acpi_piix4.c | 20 +++++++++++++-------
1 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c
index 0b5b0d3..30bafb6 100644
--- a/hw/acpi_piix4.c
+++ b/hw/acpi_piix4.c
@@ -57,6 +57,7 @@ struct pci_status {
typedef struct PIIX4PMState {
PCIDevice dev;
+
MemoryRegion io;
MemoryRegion io_gpe;
MemoryRegion io_pci;
@@ -83,7 +84,8 @@ typedef struct PIIX4PMState {
uint8_t s4_val;
} PIIX4PMState;
-static void piix4_acpi_system_hot_add_init(PCIBus *bus, PIIX4PMState *s);
+static void piix4_acpi_system_hot_add_init(MemoryRegion *parent,
+ PCIBus *bus, PIIX4PMState *s);
#define ACPI_ENABLE 0xf1
#define ACPI_DISABLE 0xf0
@@ -406,11 +408,13 @@ static int piix4_pm_initfn(PCIDevice *dev)
pci_conf[0xd2] = 0x09;
pm_smbus_init(&s->dev.qdev, &s->smb);
memory_region_set_enabled(&s->smb.io, pci_conf[0xd2] & 1);
- memory_region_add_subregion(get_system_io(), s->smb_io_base, &s->smb.io);
+ memory_region_add_subregion(pci_address_space_io(dev),
+ s->smb_io_base, &s->smb.io);
memory_region_init(&s->io, "piix4-pm", 64);
memory_region_set_enabled(&s->io, false);
- memory_region_add_subregion(get_system_io(), 0, &s->io);
+ memory_region_add_subregion(pci_address_space_io(dev),
+ 0, &s->io);
acpi_pm_tmr_init(&s->ar, pm_tmr_timer, &s->io);
acpi_pm1_evt_init(&s->ar, pm_tmr_timer, &s->io);
@@ -423,7 +427,8 @@ static int piix4_pm_initfn(PCIDevice *dev)
s->machine_ready.notify = piix4_pm_machine_ready;
qemu_add_machine_init_done_notifier(&s->machine_ready);
qemu_register_reset(piix4_reset, s);
- piix4_acpi_system_hot_add_init(dev->bus, s);
+
+ piix4_acpi_system_hot_add_init(pci_address_space_io(dev), dev->bus, s);
return 0;
}
@@ -593,15 +598,16 @@ static const MemoryRegionOps piix4_pci_ops = {
static int piix4_device_hotplug(DeviceState *qdev, PCIDevice *dev,
PCIHotplugState state);
-static void piix4_acpi_system_hot_add_init(PCIBus *bus, PIIX4PMState *s)
+static void piix4_acpi_system_hot_add_init(MemoryRegion *parent,
+ PCIBus *bus, PIIX4PMState *s)
{
memory_region_init_io(&s->io_gpe, &piix4_gpe_ops, s, "apci-gpe0",
GPE_LEN);
- memory_region_add_subregion(get_system_io(), GPE_BASE, &s->io_gpe);
+ memory_region_add_subregion(parent, GPE_BASE, &s->io_gpe);
memory_region_init_io(&s->io_pci, &piix4_pci_ops, s, "apci-pci-hotplug",
PCI_HOTPLUG_SIZE);
- memory_region_add_subregion(get_system_io(), PCI_HOTPLUG_ADDR,
+ memory_region_add_subregion(parent, PCI_HOTPLUG_ADDR,
&s->io_pci);
pci_bus_hotplug(bus, piix4_device_hotplug, &s->dev.qdev);
}
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH 4/5] apci: assign memory regions to ich9 lpc device
2012-12-12 9:15 [Qemu-devel] [PATCH 0/5] acpi: misc updates Gerd Hoffmann
` (2 preceding siblings ...)
2012-12-12 9:15 ` [Qemu-devel] [PATCH 3/5] apci: assign memory regions to piix4 acpi device Gerd Hoffmann
@ 2012-12-12 9:15 ` Gerd Hoffmann
2012-12-12 9:15 ` [Qemu-devel] [PATCH 5/5] pc: remove bochs bios debug ports Gerd Hoffmann
4 siblings, 0 replies; 10+ messages in thread
From: Gerd Hoffmann @ 2012-12-12 9:15 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Get rid of get_system_io() usage.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/acpi_ich9.c | 6 ++++--
hw/acpi_ich9.h | 4 +++-
hw/lpc_ich9.c | 2 +-
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/hw/acpi_ich9.c b/hw/acpi_ich9.c
index c5978d3..b895422 100644
--- a/hw/acpi_ich9.c
+++ b/hw/acpi_ich9.c
@@ -201,11 +201,13 @@ static void pm_powerdown_req(Notifier *n, void *opaque)
acpi_pm1_evt_power_down(&pm->acpi_regs);
}
-void ich9_pm_init(ICH9LPCPMRegs *pm, qemu_irq sci_irq, qemu_irq cmos_s3)
+void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm,
+ qemu_irq sci_irq, qemu_irq cmos_s3)
{
memory_region_init(&pm->io, "ich9-pm", ICH9_PMIO_SIZE);
memory_region_set_enabled(&pm->io, false);
- memory_region_add_subregion(get_system_io(), 0, &pm->io);
+ memory_region_add_subregion(pci_address_space_io(lpc_pci),
+ 0, &pm->io);
acpi_pm_tmr_init(&pm->acpi_regs, ich9_pm_update_sci_fn, &pm->io);
acpi_pm1_evt_init(&pm->acpi_regs, ich9_pm_update_sci_fn, &pm->io);
diff --git a/hw/acpi_ich9.h b/hw/acpi_ich9.h
index bc221d3..ecb82ab 100644
--- a/hw/acpi_ich9.h
+++ b/hw/acpi_ich9.h
@@ -30,9 +30,11 @@ typedef struct ICH9LPCPMRegs {
* PM1a_CNT_BLK = 2 in FADT so it is defined as uint16_t.
*/
ACPIREGS acpi_regs;
+
MemoryRegion io;
MemoryRegion io_gpe;
MemoryRegion io_smi;
+
uint32_t smi_en;
uint32_t smi_sts;
@@ -42,7 +44,7 @@ typedef struct ICH9LPCPMRegs {
Notifier powerdown_notifier;
} ICH9LPCPMRegs;
-void ich9_pm_init(ICH9LPCPMRegs *pm,
+void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm,
qemu_irq sci_irq, qemu_irq cmos_s3_resume);
void ich9_pm_iospace_update(ICH9LPCPMRegs *pm, uint32_t pm_io_base);
extern const VMStateDescription vmstate_ich9_pm;
diff --git a/hw/lpc_ich9.c b/hw/lpc_ich9.c
index 878a43e..dd67b61 100644
--- a/hw/lpc_ich9.c
+++ b/hw/lpc_ich9.c
@@ -352,7 +352,7 @@ void ich9_lpc_pm_init(PCIDevice *lpc_pci, qemu_irq cmos_s3)
qemu_irq *sci_irq;
sci_irq = qemu_allocate_irqs(ich9_set_sci, lpc, 1);
- ich9_pm_init(&lpc->pm, sci_irq[0], cmos_s3);
+ ich9_pm_init(lpc_pci, &lpc->pm, sci_irq[0], cmos_s3);
ich9_lpc_reset(&lpc->d.qdev);
}
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH 5/5] pc: remove bochs bios debug ports
2012-12-12 9:15 [Qemu-devel] [PATCH 0/5] acpi: misc updates Gerd Hoffmann
` (3 preceding siblings ...)
2012-12-12 9:15 ` [Qemu-devel] [PATCH 4/5] apci: assign memory regions to ich9 lpc device Gerd Hoffmann
@ 2012-12-12 9:15 ` Gerd Hoffmann
2012-12-12 13:53 ` Anthony Liguori
4 siblings, 1 reply; 10+ messages in thread
From: Gerd Hoffmann @ 2012-12-12 9:15 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Prehistoric leftover, zap it. We poweroff via acpi these days.
And having a port (0x501,0x502) where any random guest write will make
qemu exit -- with no way to turn it off -- is a bad joke anyway. If
anyone has a real use case for this (I can see this being useful for
regression testing), then make it part of debugcon or testdev so it
isn't present by default.
---
hw/pc.c | 41 -----------------------------------------
1 files changed, 0 insertions(+), 41 deletions(-)
diff --git a/hw/pc.c b/hw/pc.c
index cc4b260..0997c72 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -524,34 +524,6 @@ static void handle_a20_line_change(void *opaque, int irq, int level)
cpu_x86_set_a20(cpu, level);
}
-/***********************************************************/
-/* Bochs BIOS debug ports */
-
-static void bochs_bios_write(void *opaque, uint32_t addr, uint32_t val)
-{
- static const char shutdown_str[8] = "Shutdown";
- static int shutdown_index = 0;
-
- switch(addr) {
- case 0x8900:
- /* same as Bochs power off */
- if (val == shutdown_str[shutdown_index]) {
- shutdown_index++;
- if (shutdown_index == 8) {
- shutdown_index = 0;
- qemu_system_shutdown_request();
- }
- } else {
- shutdown_index = 0;
- }
- break;
-
- case 0x501:
- case 0x502:
- exit((val << 1) | 1);
- }
-}
-
int e820_add_entry(uint64_t address, uint64_t length, uint32_t type)
{
int index = le32_to_cpu(e820_table.count);
@@ -569,14 +541,6 @@ int e820_add_entry(uint64_t address, uint64_t length, uint32_t type)
return index;
}
-static const MemoryRegionPortio bochs_bios_portio_list[] = {
- { 0x500, 1, 1, .write = bochs_bios_write, }, /* 0x500 */
- { 0x501, 1, 1, .write = bochs_bios_write, }, /* 0x501 */
- { 0x501, 2, 2, .write = bochs_bios_write, }, /* 0x501 */
- { 0x8900, 1, 1, .write = bochs_bios_write, }, /* 0x8900 */
- PORTIO_END_OF_LIST(),
-};
-
static void *bochs_bios_init(void)
{
void *fw_cfg;
@@ -584,11 +548,6 @@ static void *bochs_bios_init(void)
size_t smbios_len;
uint64_t *numa_fw_cfg;
int i, j;
- PortioList *bochs_bios_port_list = g_new(PortioList, 1);
-
- portio_list_init(bochs_bios_port_list, bochs_bios_portio_list,
- NULL, "bochs-bios");
- portio_list_add(bochs_bios_port_list, get_system_io(), 0x0);
fw_cfg = fw_cfg_init(BIOS_CFG_IOPORT, BIOS_CFG_IOPORT + 1, 0, 0);
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH 5/5] pc: remove bochs bios debug ports
2012-12-12 9:15 ` [Qemu-devel] [PATCH 5/5] pc: remove bochs bios debug ports Gerd Hoffmann
@ 2012-12-12 13:53 ` Anthony Liguori
2012-12-12 15:23 ` [Qemu-devel] [PATCH] add isa-debug-exit device Gerd Hoffmann
0 siblings, 1 reply; 10+ messages in thread
From: Anthony Liguori @ 2012-12-12 13:53 UTC (permalink / raw)
To: Gerd Hoffmann, qemu-devel
Gerd Hoffmann <kraxel@redhat.com> writes:
> Prehistoric leftover, zap it. We poweroff via acpi these days.
>
> And having a port (0x501,0x502) where any random guest write will make
> qemu exit -- with no way to turn it off -- is a bad joke anyway. If
> anyone has a real use case for this (I can see this being useful for
> regression testing), then make it part of debugcon or testdev so it
> isn't present by default.
I use 0x501 for my test suite so please don't remove it blindly.
Regards,
Anthony Liguori
> ---
> hw/pc.c | 41 -----------------------------------------
> 1 files changed, 0 insertions(+), 41 deletions(-)
>
> diff --git a/hw/pc.c b/hw/pc.c
> index cc4b260..0997c72 100644
> --- a/hw/pc.c
> +++ b/hw/pc.c
> @@ -524,34 +524,6 @@ static void handle_a20_line_change(void *opaque, int irq, int level)
> cpu_x86_set_a20(cpu, level);
> }
>
> -/***********************************************************/
> -/* Bochs BIOS debug ports */
> -
> -static void bochs_bios_write(void *opaque, uint32_t addr, uint32_t val)
> -{
> - static const char shutdown_str[8] = "Shutdown";
> - static int shutdown_index = 0;
> -
> - switch(addr) {
> - case 0x8900:
> - /* same as Bochs power off */
> - if (val == shutdown_str[shutdown_index]) {
> - shutdown_index++;
> - if (shutdown_index == 8) {
> - shutdown_index = 0;
> - qemu_system_shutdown_request();
> - }
> - } else {
> - shutdown_index = 0;
> - }
> - break;
> -
> - case 0x501:
> - case 0x502:
> - exit((val << 1) | 1);
> - }
> -}
> -
> int e820_add_entry(uint64_t address, uint64_t length, uint32_t type)
> {
> int index = le32_to_cpu(e820_table.count);
> @@ -569,14 +541,6 @@ int e820_add_entry(uint64_t address, uint64_t length, uint32_t type)
> return index;
> }
>
> -static const MemoryRegionPortio bochs_bios_portio_list[] = {
> - { 0x500, 1, 1, .write = bochs_bios_write, }, /* 0x500 */
> - { 0x501, 1, 1, .write = bochs_bios_write, }, /* 0x501 */
> - { 0x501, 2, 2, .write = bochs_bios_write, }, /* 0x501 */
> - { 0x8900, 1, 1, .write = bochs_bios_write, }, /* 0x8900 */
> - PORTIO_END_OF_LIST(),
> -};
> -
> static void *bochs_bios_init(void)
> {
> void *fw_cfg;
> @@ -584,11 +548,6 @@ static void *bochs_bios_init(void)
> size_t smbios_len;
> uint64_t *numa_fw_cfg;
> int i, j;
> - PortioList *bochs_bios_port_list = g_new(PortioList, 1);
> -
> - portio_list_init(bochs_bios_port_list, bochs_bios_portio_list,
> - NULL, "bochs-bios");
> - portio_list_add(bochs_bios_port_list, get_system_io(), 0x0);
>
> fw_cfg = fw_cfg_init(BIOS_CFG_IOPORT, BIOS_CFG_IOPORT + 1, 0, 0);
>
> --
> 1.7.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH] add isa-debug-exit device.
2012-12-12 13:53 ` Anthony Liguori
@ 2012-12-12 15:23 ` Gerd Hoffmann
2012-12-12 15:29 ` Paolo Bonzini
0 siblings, 1 reply; 10+ messages in thread
From: Gerd Hoffmann @ 2012-12-12 15:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
When present it makes qemu exit on any write.
Mapped to port 0x501 by default.
Without this patch Anthony doesn't allow me to
remove the bochs bios debug ports because his
test suite uses this.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/debugexit.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++
hw/i386/Makefile.objs | 2 +-
2 files changed, 72 insertions(+), 1 deletions(-)
create mode 100644 hw/debugexit.c
diff --git a/hw/debugexit.c b/hw/debugexit.c
new file mode 100644
index 0000000..e1f7570
--- /dev/null
+++ b/hw/debugexit.c
@@ -0,0 +1,71 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 or
+ * (at your option) version 3 of the License.
+ */
+
+#include "hw.h"
+#include "isa.h"
+
+#define TYPE_ISA_DEBUG_EXIT_DEVICE "isa-debug-exit"
+#define ISA_DEBUG_EXIT_DEVICE(obj) \
+ OBJECT_CHECK(ISADebugExitState, (obj), TYPE_ISA_DEBUG_EXIT_DEVICE)
+
+typedef struct ISADebugExitState {
+ ISADevice parent_obj;
+
+ uint32_t iobase;
+ MemoryRegion io;
+} ISADebugExitState;
+
+static void debug_exit_write(void *opaque, hwaddr addr, uint64_t val,
+ unsigned width)
+{
+ exit((val << 1) | 1);
+}
+
+static const MemoryRegionOps debug_exit_ops = {
+ .write = debug_exit_write,
+ .valid.min_access_size = 1,
+ .valid.max_access_size = 1,
+ .endianness = DEVICE_LITTLE_ENDIAN,
+};
+
+static int debug_exit_initfn(ISADevice *dev)
+{
+ ISADebugExitState *isa = ISA_DEBUG_EXIT_DEVICE(dev);
+
+ memory_region_init_io(&isa->io, &debug_exit_ops, isa,
+ TYPE_ISA_DEBUG_EXIT_DEVICE, 1);
+ memory_region_add_subregion(isa_address_space_io(dev),
+ isa->iobase, &isa->io);
+ return 0;
+}
+
+static Property debug_exit_properties[] = {
+ DEFINE_PROP_HEX32("iobase", ISADebugExitState, iobase, 0x501),
+ DEFINE_PROP_END_OF_LIST(),
+};
+
+static void debug_exit_class_initfn(ObjectClass *klass, void *data)
+{
+ DeviceClass *dc = DEVICE_CLASS(klass);
+ ISADeviceClass *ic = ISA_DEVICE_CLASS(klass);
+ ic->init = debug_exit_initfn;
+ dc->props = debug_exit_properties;
+}
+
+static TypeInfo debug_exit_info = {
+ .name = TYPE_ISA_DEBUG_EXIT_DEVICE,
+ .parent = TYPE_ISA_DEVICE,
+ .instance_size = sizeof(ISADebugExitState),
+ .class_init = debug_exit_class_initfn,
+};
+
+static void debug_exit_register_types(void)
+{
+ type_register_static(&debug_exit_info);
+}
+
+type_init(debug_exit_register_types)
diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs
index 0d3f6a8..56aaa9d 100644
--- a/hw/i386/Makefile.objs
+++ b/hw/i386/Makefile.objs
@@ -3,7 +3,7 @@ obj-y += apic_common.o apic.o kvmvapic.o
obj-y += sga.o ioapic_common.o ioapic.o piix_pci.o
obj-y += vmport.o
obj-y += pci-hotplug.o smbios.o wdt_ib700.o
-obj-y += debugcon.o multiboot.o
+obj-y += debugcon.o debugexit.o multiboot.o
obj-y += pc_piix.o
obj-y += pc_sysfw.o
obj-y += lpc_ich9.o q35.o pc_q35.o
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH] add isa-debug-exit device.
2012-12-12 15:23 ` [Qemu-devel] [PATCH] add isa-debug-exit device Gerd Hoffmann
@ 2012-12-12 15:29 ` Paolo Bonzini
2012-12-12 16:05 ` Lucas Meneghel Rodrigues
0 siblings, 1 reply; 10+ messages in thread
From: Paolo Bonzini @ 2012-12-12 15:29 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: Lucas Meneghel Rodrigues, Hervé Poussineau, qemu-devel
Il 12/12/2012 16:23, Gerd Hoffmann ha scritto:
> When present it makes qemu exit on any write.
> Mapped to port 0x501 by default.
>
> Without this patch Anthony doesn't allow me to
> remove the bochs bios debug ports because his
> test suite uses this.
Wasn't this patch submitted already by Herve' first and Lucas second? :)
Lucas, what happened to your testdev patches?
Paolo
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
> hw/debugexit.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++
> hw/i386/Makefile.objs | 2 +-
> 2 files changed, 72 insertions(+), 1 deletions(-)
> create mode 100644 hw/debugexit.c
>
> diff --git a/hw/debugexit.c b/hw/debugexit.c
> new file mode 100644
> index 0000000..e1f7570
> --- /dev/null
> +++ b/hw/debugexit.c
> @@ -0,0 +1,71 @@
> +/*
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 or
> + * (at your option) version 3 of the License.
> + */
> +
> +#include "hw.h"
> +#include "isa.h"
> +
> +#define TYPE_ISA_DEBUG_EXIT_DEVICE "isa-debug-exit"
> +#define ISA_DEBUG_EXIT_DEVICE(obj) \
> + OBJECT_CHECK(ISADebugExitState, (obj), TYPE_ISA_DEBUG_EXIT_DEVICE)
> +
> +typedef struct ISADebugExitState {
> + ISADevice parent_obj;
> +
> + uint32_t iobase;
> + MemoryRegion io;
> +} ISADebugExitState;
> +
> +static void debug_exit_write(void *opaque, hwaddr addr, uint64_t val,
> + unsigned width)
> +{
> + exit((val << 1) | 1);
> +}
> +
> +static const MemoryRegionOps debug_exit_ops = {
> + .write = debug_exit_write,
> + .valid.min_access_size = 1,
> + .valid.max_access_size = 1,
> + .endianness = DEVICE_LITTLE_ENDIAN,
> +};
> +
> +static int debug_exit_initfn(ISADevice *dev)
> +{
> + ISADebugExitState *isa = ISA_DEBUG_EXIT_DEVICE(dev);
> +
> + memory_region_init_io(&isa->io, &debug_exit_ops, isa,
> + TYPE_ISA_DEBUG_EXIT_DEVICE, 1);
> + memory_region_add_subregion(isa_address_space_io(dev),
> + isa->iobase, &isa->io);
> + return 0;
> +}
> +
> +static Property debug_exit_properties[] = {
> + DEFINE_PROP_HEX32("iobase", ISADebugExitState, iobase, 0x501),
> + DEFINE_PROP_END_OF_LIST(),
> +};
> +
> +static void debug_exit_class_initfn(ObjectClass *klass, void *data)
> +{
> + DeviceClass *dc = DEVICE_CLASS(klass);
> + ISADeviceClass *ic = ISA_DEVICE_CLASS(klass);
> + ic->init = debug_exit_initfn;
> + dc->props = debug_exit_properties;
> +}
> +
> +static TypeInfo debug_exit_info = {
> + .name = TYPE_ISA_DEBUG_EXIT_DEVICE,
> + .parent = TYPE_ISA_DEVICE,
> + .instance_size = sizeof(ISADebugExitState),
> + .class_init = debug_exit_class_initfn,
> +};
> +
> +static void debug_exit_register_types(void)
> +{
> + type_register_static(&debug_exit_info);
> +}
> +
> +type_init(debug_exit_register_types)
> diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs
> index 0d3f6a8..56aaa9d 100644
> --- a/hw/i386/Makefile.objs
> +++ b/hw/i386/Makefile.objs
> @@ -3,7 +3,7 @@ obj-y += apic_common.o apic.o kvmvapic.o
> obj-y += sga.o ioapic_common.o ioapic.o piix_pci.o
> obj-y += vmport.o
> obj-y += pci-hotplug.o smbios.o wdt_ib700.o
> -obj-y += debugcon.o multiboot.o
> +obj-y += debugcon.o debugexit.o multiboot.o
> obj-y += pc_piix.o
> obj-y += pc_sysfw.o
> obj-y += lpc_ich9.o q35.o pc_q35.o
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH] add isa-debug-exit device.
2012-12-12 15:29 ` Paolo Bonzini
@ 2012-12-12 16:05 ` Lucas Meneghel Rodrigues
0 siblings, 0 replies; 10+ messages in thread
From: Lucas Meneghel Rodrigues @ 2012-12-12 16:05 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: Hervé Poussineau, Gerd Hoffmann, qemu-devel
On 12/12/2012 01:29 PM, Paolo Bonzini wrote:
> Il 12/12/2012 16:23, Gerd Hoffmann ha scritto:
>> When present it makes qemu exit on any write.
>> Mapped to port 0x501 by default.
>>
>> Without this patch Anthony doesn't allow me to
>> remove the bochs bios debug ports because his
>> test suite uses this.
>
> Wasn't this patch submitted already by Herve' first and Lucas second? :)
>
> Lucas, what happened to your testdev patches?
I talked to Marcelo, he said he'd assume the patchset I sent to carry
out with upstream inclusion. Since then I got absorbed in other tasks,
so I really haven't checked the status.
Since it seem things got stalled, I'll resume from where I left, will
re-send the patches soon.
Cheers,
Lucas
> Paolo
>
>> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
>> ---
>> hw/debugexit.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++
>> hw/i386/Makefile.objs | 2 +-
>> 2 files changed, 72 insertions(+), 1 deletions(-)
>> create mode 100644 hw/debugexit.c
>>
>> diff --git a/hw/debugexit.c b/hw/debugexit.c
>> new file mode 100644
>> index 0000000..e1f7570
>> --- /dev/null
>> +++ b/hw/debugexit.c
>> @@ -0,0 +1,71 @@
>> +/*
>> + * This program is free software; you can redistribute it and/or
>> + * modify it under the terms of the GNU General Public License as
>> + * published by the Free Software Foundation; either version 2 or
>> + * (at your option) version 3 of the License.
>> + */
>> +
>> +#include "hw.h"
>> +#include "isa.h"
>> +
>> +#define TYPE_ISA_DEBUG_EXIT_DEVICE "isa-debug-exit"
>> +#define ISA_DEBUG_EXIT_DEVICE(obj) \
>> + OBJECT_CHECK(ISADebugExitState, (obj), TYPE_ISA_DEBUG_EXIT_DEVICE)
>> +
>> +typedef struct ISADebugExitState {
>> + ISADevice parent_obj;
>> +
>> + uint32_t iobase;
>> + MemoryRegion io;
>> +} ISADebugExitState;
>> +
>> +static void debug_exit_write(void *opaque, hwaddr addr, uint64_t val,
>> + unsigned width)
>> +{
>> + exit((val << 1) | 1);
>> +}
>> +
>> +static const MemoryRegionOps debug_exit_ops = {
>> + .write = debug_exit_write,
>> + .valid.min_access_size = 1,
>> + .valid.max_access_size = 1,
>> + .endianness = DEVICE_LITTLE_ENDIAN,
>> +};
>> +
>> +static int debug_exit_initfn(ISADevice *dev)
>> +{
>> + ISADebugExitState *isa = ISA_DEBUG_EXIT_DEVICE(dev);
>> +
>> + memory_region_init_io(&isa->io, &debug_exit_ops, isa,
>> + TYPE_ISA_DEBUG_EXIT_DEVICE, 1);
>> + memory_region_add_subregion(isa_address_space_io(dev),
>> + isa->iobase, &isa->io);
>> + return 0;
>> +}
>> +
>> +static Property debug_exit_properties[] = {
>> + DEFINE_PROP_HEX32("iobase", ISADebugExitState, iobase, 0x501),
>> + DEFINE_PROP_END_OF_LIST(),
>> +};
>> +
>> +static void debug_exit_class_initfn(ObjectClass *klass, void *data)
>> +{
>> + DeviceClass *dc = DEVICE_CLASS(klass);
>> + ISADeviceClass *ic = ISA_DEVICE_CLASS(klass);
>> + ic->init = debug_exit_initfn;
>> + dc->props = debug_exit_properties;
>> +}
>> +
>> +static TypeInfo debug_exit_info = {
>> + .name = TYPE_ISA_DEBUG_EXIT_DEVICE,
>> + .parent = TYPE_ISA_DEVICE,
>> + .instance_size = sizeof(ISADebugExitState),
>> + .class_init = debug_exit_class_initfn,
>> +};
>> +
>> +static void debug_exit_register_types(void)
>> +{
>> + type_register_static(&debug_exit_info);
>> +}
>> +
>> +type_init(debug_exit_register_types)
>> diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs
>> index 0d3f6a8..56aaa9d 100644
>> --- a/hw/i386/Makefile.objs
>> +++ b/hw/i386/Makefile.objs
>> @@ -3,7 +3,7 @@ obj-y += apic_common.o apic.o kvmvapic.o
>> obj-y += sga.o ioapic_common.o ioapic.o piix_pci.o
>> obj-y += vmport.o
>> obj-y += pci-hotplug.o smbios.o wdt_ib700.o
>> -obj-y += debugcon.o multiboot.o
>> +obj-y += debugcon.o debugexit.o multiboot.o
>> obj-y += pc_piix.o
>> obj-y += pc_sysfw.o
>> obj-y += lpc_ich9.o q35.o pc_q35.o
>>
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread