[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] ACPI-Tables corrupted?



On 28/07/2010 13:13, "Juergen Gross" <juergen.gross@xxxxxxxxxxxxxx> wrote:

>>> As Dom0 is a pv-kernel, it should be able to ignore this entry.
>>> The crash kernel OTOH should not panic due to the trashed entry!
>>> What is the correct solution here?
>> 
>> Could provide a cmdline option to not nobble the DMAR?
> 
> That's a possibility.
> I wonder whether it wouldn't be better to let dom0 decide not to use it if
> running under xen. This would remove the requirement for zapping the ACPI
> table. IMO it's always a bad idea to change data of a deeper layer...

If we don't zap the DMAR then every existing dom0 kernel will fail with new
hypervisor. We could gate it on a new elfnote, or rename to XMAR and have
dom0 rename it back, or just have a flag day.

>>> The crash kernel expects a valid DMAR entry, as following code in
>>> enable_IR_x2apic() suggests:
>> 
>> I don't know what that function does, nor how the error path below depends
>> on DMAR. DMAR isn't mentioned in the below code.
> 
> Sorry, here a larger fragment (source arch/x86/kernel/apic/apic.c):
>                  /* IR is required if there is APIC ID > 255 even when running
>                   * under KVM
>                   */
>                  if (max_physical_apicid > 255 || !kvm_para_available())
>                          goto nox2apic;

The if stmt is confusing. Also, what would happen if this kernel was booted
on a system without VT-d (and hence no DMAR)? Presumably it *can* boot in a
DMAR-less environment -- there must be something odd going on for it to end
on this path for us.

 -- Keir

>                  /*
>                   * without IR all CPUs can be addressed by IOAPIC/MSI
>                   * only in physical mode
>                   */
>                  x2apic_force_phys();
>          }
> 
>          x2apic_enabled = 1;
> 
>          if (x2apic_supported() && !x2apic_mode) {
>                  x2apic_mode = 1;
>                  enable_x2apic();
>                  pr_info("Enabled x2apic\n");
>          }
> 
> nox2apic:
>          if (!ret) /* IR enabling failed */
>                  restore_IO_APIC_setup(ioapic_entries);
>          unmask_8259A();
>          local_irq_restore(flags);
> 
> out:
>          if (ioapic_entries)
>                  free_ioapic_entries(ioapic_entries);
> 
>          if (x2apic_enabled)
>                  return;
> 
>          if (x2apic_preenabled)
>                  panic("x2apic: enabled by BIOS but kernel init failed.");
>          else if (cpu_has_x2apic)
>                  pr_info("Not enabling x2apic, Intr-remapping init
> failed.\n");
> }
> 
> 
> dmar_table_init() will return -ENODEV if no DMAR record is found.
> 
> 
> Juergen



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.