Liu, Jinsong wrote:> Konrad Rzeszutek Wilk wrote:>>>> Compare approaches:>>>> >>>> 1. xen overwritten approach (patches V2, x86_init, osl approach)>>>> Pros: a little simpler code>>>> Cons:>>>> 1). specific to xen, cannot extend to other virt platform;>>>> 2). need to change natvie acpi_pad as modular;>>>> >>>> 2. paravirt interface approach (original patches V1) Pros:>>>> 1). standard hypervisor-agnostic interface (USENIX>>>> conference 2006), can easily hook to Xen/lguest/... on>>>> demand; 2). arch independent; 3). no need to change native>>>> acpi_pad as non-modular; Cons: a little complicated>>>> code, and code patching is some>>>> overkilled for this case (but no harm);>>>> >>>> (BTW, in the future we need add more and more pv ops, like>>>> pv_pm_ops, pv_cpu_hotplug_ops, pv_mem_hotplug_ops, etc. So how>>>> about add a pv_misc_ops template to handle them all? seems it's a>>>> common issue). >>>> >> >> I think (and you probabaly have a better idea) is that the maintainer>> of drivers/acpi/* is not very open to adding in code that only>> benefits Xen.> > Take paravirt interface approach as example. We only change a little> about native acpi_pad_init/acpi_pad_exit, intercept it and> *implicitly* hook to native/paravirt platform (it didn't appear any> 'xen' 'pv' word in native pad logic). This is what I can find out the> least change to native pad logic, and it in fact benefits> (extensiable) to all pv. If this is still not acceptable we have to> find other way (but I'm not sure) :-) > >> >> If it benefits other architectures (say ARM) then adding in hooks>> there (in osl for example) makes sense - but I am not sure if ARM>> has a form of _PUR code/calls it needs to do.>> >> So with that in mind, neither of those options seems proper - as all>> of them depend on changing something in drivers/acpi/*.>> >> I've one or two suggestions of what could be done to still make this>> work, but I need you to first see what happens if the native acpi_pad>> runs under Xen with the latest upstream code (along with three>> patches that are in a BZ I pointed you too).> > Do you mean test the patch> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blobdiff;f=arch/x86/xen/enlighten.c;h=b132ade26f778f2cfec7c2d5c7b6db48afe424d5;hp=4172af8ceeb363d06912af15bf89e8508752b794;hb=d4c6fa73fe984e504d52f3d6bba291fd76fe49f7;hpb=aab008db8063364dc3c8ccf4981c21124866b395> ?