From: Paolo Bonzini <pbonzini@redhat.com>
To: Sergio Lopez <slp@redhat.com>
Cc: philmd@redhat.com, qemu-devel@nongnu.org
Subject: Re: [PATCH 3/5] x86: move more functions to X86MachineState and x86.c
Date: Thu, 12 Dec 2019 17:05:42 +0100 [thread overview]
Message-ID: <2f146dec-63de-33f7-ea1f-c189d85605f1@redhat.com> (raw)
In-Reply-To: <87y2vhbkm3.fsf@redhat.com>
[-- Attachment #1.1: Type: text/plain, Size: 5347 bytes --]
On 12/12/19 16:59, Sergio Lopez wrote:
>
> Paolo Bonzini <pbonzini@redhat.com> writes:
>
>> These are needed by microvm too, so move them outside of PC-specific files.
>>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
>> hw/i386/pc.c | 99 -------------------------------------------------
>> hw/i386/x86.c | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++
>> include/hw/i386/pc.h | 12 ------
>> include/hw/i386/x86.h | 13 +++++++
>> 4 files changed, 114 insertions(+), 111 deletions(-)
>>
>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>> index 3d2c5d8..308248d 100644
>> --- a/hw/i386/pc.c
>> +++ b/hw/i386/pc.c
>> @@ -342,17 +342,6 @@ GlobalProperty pc_compat_1_4[] = {
>> };
>> const size_t pc_compat_1_4_len = G_N_ELEMENTS(pc_compat_1_4);
>>
>> -void gsi_handler(void *opaque, int n, int level)
>> -{
>> - GSIState *s = opaque;
>> -
>> - DPRINTF("pc: %s GSI %d\n", level ? "raising" : "lowering", n);
>> - if (n < ISA_NUM_IRQS) {
>> - qemu_set_irq(s->i8259_irq[n], level);
>> - }
>> - qemu_set_irq(s->ioapic_irq[n], level);
>> -}
>> -
>> GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled)
>> {
>> GSIState *s;
>> @@ -392,55 +381,6 @@ static uint64_t ioportF0_read(void *opaque, hwaddr addr, unsigned size)
>> return 0xffffffffffffffffULL;
>> }
>>
>> -/* TSC handling */
>> -uint64_t cpu_get_tsc(CPUX86State *env)
>> -{
>> - return cpu_get_ticks();
>> -}
>> -
>> -/* IRQ handling */
>> -int cpu_get_pic_interrupt(CPUX86State *env)
>> -{
>> - X86CPU *cpu = env_archcpu(env);
>> - int intno;
>> -
>> - if (!kvm_irqchip_in_kernel()) {
>> - intno = apic_get_interrupt(cpu->apic_state);
>> - if (intno >= 0) {
>> - return intno;
>> - }
>> - /* read the irq from the PIC */
>> - if (!apic_accept_pic_intr(cpu->apic_state)) {
>> - return -1;
>> - }
>> - }
>> -
>> - intno = pic_read_irq(isa_pic);
>> - return intno;
>> -}
>> -
>> -static void pic_irq_request(void *opaque, int irq, int level)
>> -{
>> - CPUState *cs = first_cpu;
>> - X86CPU *cpu = X86_CPU(cs);
>> -
>> - DPRINTF("pic_irqs: %s irq %d\n", level? "raise" : "lower", irq);
>> - if (cpu->apic_state && !kvm_irqchip_in_kernel()) {
>> - CPU_FOREACH(cs) {
>> - cpu = X86_CPU(cs);
>> - if (apic_accept_pic_intr(cpu->apic_state)) {
>> - apic_deliver_pic_intr(cpu->apic_state, level);
>> - }
>> - }
>> - } else {
>> - if (level) {
>> - cpu_interrupt(cs, CPU_INTERRUPT_HARD);
>> - } else {
>> - cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD);
>> - }
>> - }
>> -}
>> -
>> /* PC cmos mappings */
>>
>> #define REG_EQUIPMENT_BYTE 0x14
>> @@ -884,16 +824,6 @@ void pc_init_ne2k_isa(ISABus *bus, NICInfo *nd)
>> nb_ne2k++;
>> }
>>
>> -DeviceState *cpu_get_current_apic(void)
>> -{
>> - if (current_cpu) {
>> - X86CPU *cpu = X86_CPU(current_cpu);
>> - return cpu->apic_state;
>> - } else {
>> - return NULL;
>> - }
>> -}
>> -
>> void pc_acpi_smi_interrupt(void *opaque, int irq, int level)
>> {
>> X86CPU *cpu = opaque;
>> @@ -1289,11 +1219,6 @@ uint64_t pc_pci_hole64_start(void)
>> return ROUND_UP(hole64_start, 1 * GiB);
>> }
>>
>> -qemu_irq pc_allocate_cpu_irq(void)
>> -{
>> - return qemu_allocate_irq(pic_irq_request, NULL, 0);
>> -}
>> -
>> DeviceState *pc_vga_init(ISABus *isa_bus, PCIBus *pci_bus)
>> {
>> DeviceState *dev = NULL;
>> @@ -1480,30 +1405,6 @@ void pc_i8259_create(ISABus *isa_bus, qemu_irq *i8259_irqs)
>> g_free(i8259);
>> }
>>
>> -void ioapic_init_gsi(GSIState *gsi_state, const char *parent_name)
>> -{
>> - DeviceState *dev;
>> - SysBusDevice *d;
>> - unsigned int i;
>> -
>> - if (kvm_ioapic_in_kernel()) {
>> - dev = qdev_create(NULL, TYPE_KVM_IOAPIC);
>> - } else {
>> - dev = qdev_create(NULL, TYPE_IOAPIC);
>> - }
>> - if (parent_name) {
>> - object_property_add_child(object_resolve_path(parent_name, NULL),
>> - "ioapic", OBJECT(dev), NULL);
>> - }
>> - qdev_init_nofail(dev);
>> - d = SYS_BUS_DEVICE(dev);
>> - sysbus_mmio_map(d, 0, IO_APIC_DEFAULT_ADDRESS);
>> -
>> - for (i = 0; i < IOAPIC_NUM_PINS; i++) {
>> - gsi_state->ioapic_irq[i] = qdev_get_gpio_in(dev, i);
>> - }
>> -}
>> -
>> static void pc_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
>> Error **errp)
>> {
>> diff --git a/hw/i386/x86.c b/hw/i386/x86.c
>> index 394edc2..028bbf4 100644
>> --- a/hw/i386/x86.c
>> +++ b/hw/i386/x86.c
>> @@ -41,11 +41,15 @@
>> #include "hw/i386/fw_cfg.h"
>>
>> #include "hw/acpi/cpu_hotplug.h"
>> +#include "hw/i386/pc.h"
>
> Including pc.h from x86.h looks a bit weird to me. I think it'd be nicer
> moving the i8259 declarations to a separate header, and the all the
> GSI-related stuff to x86.h. I have a couple patches doing that, in case
> they can save you some time.
Hmm I wonder if the include is actually needed. Thanks for pointing it out.
Paolo
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2019-12-12 16:06 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-12 14:30 [PATCH 0/5] x86: allow building without PC machine types Paolo Bonzini
2019-12-12 14:30 ` [PATCH 1/5] i386: conditionally compile more files Paolo Bonzini
2019-12-12 15:45 ` Sergio Lopez
2019-12-12 14:30 ` [PATCH 2/5] fw_cfg: allow building without other devices Paolo Bonzini
2019-12-12 15:49 ` Sergio Lopez
2019-12-12 14:30 ` [PATCH 3/5] x86: move more functions to X86MachineState and x86.c Paolo Bonzini
2019-12-12 15:59 ` Sergio Lopez
2019-12-12 16:05 ` Paolo Bonzini [this message]
2019-12-12 14:30 ` [PATCH 4/5] pci-stub: add more MSI functions Paolo Bonzini
2019-12-12 16:00 ` Sergio Lopez
2019-12-12 14:30 ` [PATCH 5/5] kvm: check before accessing PCMachineState fields Paolo Bonzini
2019-12-12 16:11 ` Sergio Lopez
2019-12-12 16:18 ` Paolo Bonzini
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=2f146dec-63de-33f7-ea1f-c189d85605f1@redhat.com \
--to=pbonzini@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=slp@redhat.com \
/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).