Re: [PATCH 09/10] x86: jailhouse: Wire up IOAPIC for legacy UART ports

From: Thomas Gleixner
Date: Fri Nov 17 2017 - 18:15:33 EST


On Thu, 16 Nov 2017, Jan Kiszka wrote:
>
> static void __init jailhouse_init_platform(void)
> {
> + struct ioapic_domain_cfg ioapic_cfg = {
> + .type = IOAPIC_DOMAIN_STRICT,
> + .ops = &mp_ioapic_irqdomain_ops,
> + };
> + struct mpc_intsrc mp_irq = {
> + .type = MP_INTSRC,
> + .irqtype = mp_INT,
> + };
> u64 pa_data = boot_params.hdr.setup_data;
> struct jailhouse_setup_data *data;
> unsigned int cpu;
> @@ -189,6 +198,17 @@ static void __init jailhouse_init_platform(void)
> boot_cpu_apic_version);
> smp_found_config = 1;
>
> + if (data->standard_ioapic) {
> + mp_register_ioapic(0, 0xfec00000, gsi_top, &ioapic_cfg);
> +
> + /* Register 1:1 mapping for legacy UART IRQs 3 and 4 */
> + mp_irq.srcbusirq = mp_irq.dstirq = 3;
> + mp_save_irq(&mp_irq);
> +
> + mp_irq.srcbusirq = mp_irq.dstirq = 4;
> + mp_save_irq(&mp_irq);

Again, that can run later. And please split out initialization for
particular features into separate functions. Otherwise the parse function
will become a kitchen sink of all sorts.

Thanks,

tglx