Port-xen archive

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

Re: Xen modules



On Nov 10,  1:58am, Jean-Yves Migeon wrote:
} Le 08/11/2013 04:08, John Nemeth a écrit :
} >       There's basically two choices.  wbinvd() calls xpq_flush_cache().
} > It's the only caller.  So, the first choice is to change wbinvd()
} > to do the WBINVD and delete xpq_flush_cache().  The second option
} > is to modify xpq_flush_cache() to do the WBINVD instead of making
} > the hypercall, which is the method I tested since that's the smallest
} > change.  Right now, xpq_flush_cache() looks like:
} 
} The latter. Keep xpq_flush_cache() for now and replace the MMU flush by 
} the asm stub. That is the least intrusive. Otherwise that's good for me. 
} Thanks.

     Okay, this one has been done.

} >       The only modifications are to fix the issue above, set the
} > module loading path, and adding "options MODULAR" to the kernel
} > config file.  In other words, no significant changes.
} 
} Alright. I am currently looking at the Makefiles, but nothing seems to 
} alter symbol lookup (like visibility flags to ld(1)).
} 
} > } It's been a while since I looked at the Makefiles (under
} > } arch/xen/conf/), however Xen kernels are not built with OPT_MODULAR
} > } turned on IIRC.
} > }
} > } ldscripts should not differ much though (between i386/amd64 and xen).
} > }
} > } Sorry for not being more specific :/
} > }
} > } > # modload cd9660
} > } > kobj_checksyms, 881: [cd9660]: linker error: symbol `pool_destroy' not 
found
} > } > kobj_checksyms, 881: [cd9660]: linker error: symbol `brelse' not found
} > } > kobj_checksyms, 881: [cd9660]: linker error: symbol 
`uio_setup_sysspace' not found
} > } > kobj_checksyms, 881: [cd9660]: linker error: symbol `mutex_destroy' not 
found
} > } > WARNING: module error: unable to affix module `cd9660', error 8
} > }
} > } Difference in nm output between the two kernels for those symbols?
} >
} >       Other then the address, they look the same:
} >
} > P4-3679GHz: {194} nm netbsd-XEN3PAE_DOMU | grep pool_destroy
} > c038d960 T pool_destroy
} > P4-3679GHz: {195} nm netbsd-GENERIC | grep pool_destroy
} > c0814d07 T pool_destroy
} >
} > Same for the other symbols.
} 
} Indeed. However something to note: dom0 kernels are loaded as multiboot 
} components to the hypervisor, and I don't know how it behaves in regards 
} to ELF. A good test would be to load a domU and attempt a modload in the 
} domain.

     I am doing these tests in a domU.  Much easier to test things
that way.  Although if I was running in a dom0 I wouldn't have run
across the problem with xpq_flush_cache().

} Did you build the kernel with "options KSYMS_DEBUG"?

     I hadn't, but I tried now.  It didn't give any additional
output for the failure case or at boot time.  When successfully
loading a module (i.e. the example) module, it outputed a line
showing the symbol table addition.

     I tried uncommenting the makeoptions line that adds -g to the
compilation.  That resulted in more missing symbols.

}-- End of excerpt from Jean-Yves Migeon


Home | Main Index | Thread Index | Old Index