Messages in this thread | | | Date | Sat, 12 Jul 2008 17:55:48 -0700 | From | Suresh Siddha <> | Subject | Re: [patch 00/26] x64, x2apic/intr-remap: Interrupt-remapping and x2apic support |
| |
On Fri, Jul 11, 2008 at 08:16:03PM -0700, Yinghai Lu wrote: > 1. wonder if x2apic can be use with uniprocessor.
From the theory yes.
> in APIC_init_uniprocessor, it will try to enable x2apic, but later > > apic_write(APIC_ID, SET_APIC_ID(boot_cpu_physical_apicid)); > > but SET_APIC_ID is still for xapic version. so need to GET_APIC_ID, > SET_APIC_ID for different > genapic like 32bit.
apic_write for APIC_ID in x2apic is ignored. As it is a RO register.
> 2 check_x2apic is called in setup_arch, but it only set apic_ops,
BIOS can handover the control to OS in x2apic mode, so we need to check very early about the mode of the APIC to use proper accesses (mem Vs reg). BIOS can hand over in x2apic if the platform has > 8 bit apic id's.
> and genapic still not changed, aka apic_flat... > wonder if you need to call setup_apic_routing to set genapic. > > otherwise read_apic_id could have use the one from apic_flat....need > to shift......
for setup_apic_routing(), we really need to know the platform capbilities, like intr-remapping etc. So we can;t do the genapic setup so early.
Ideally, read_apic_id() can be part of native apic_ops, but UV has a different implementation.
And also, typically for boot processor, xapic id and x2apic id will be same. xapic id needs shifting but not x2apic id.
And also, we can re-set the boot_cpu_physical_apicid, after enabling x2apic. I was planning to look at this in the next patchset.
> 3.or move read_apic_id to apic_ops intead...together with GET_APIC_ID too. > but 32bit version seems like to put GET_APIC_ID with genapic...
yeah, UV has a different version. so need to think more about the clean solution
thanks, suresh
> > which one is better? 2 or 3 > > YH
| |