Our hacking maestro, graf_chokolo just updated his Linux kernel git with the inclusion of brand new PS3 Linux drivers. In addition, he also added a new IOCTL to /dev/ps3ram character device – PS3RAM_IOCTL_USER_TO_LPAR_ADDR which allows you to convert a user space memory address to LPAR address. Latest commits from graf_chokolo can be found below:
Added ioctl PS3RAM_IOCTL_USER_TO_LPAR_ADDR cmd to ps3ram character device to convert user space addresses to lpar addresses
New PS3 VUART Dispatcher Manager (port 10) driver
New PS3 Dispatcher Manager Proxy character device driver for user space /dev/ps3dmproxy
Full release note from graf_chokolo:
Just pushed my newest PS3 Linux drivers to remote [notranslate]GIT[/notranslate] repository
You can access Dispatcher Manager from User Space through /dev/ps3dmproxy and in Kernel Space through ps3dm interface.
But take care, some HV services are dangerous and you should know what you are doing, you could e.g. overwrite your metldr or EID on FLASH So be careful.
I intend to write an updater for packages in the next days which will be able to update e.g. CORE OS package from Linux user space And then i will upload it.
For a long time i couldn’t decide where to implement the updater, in kernel space or in user space, kernel space makes e.g. easy converting memory addresses to LPAR addresses, but allocating large piece of memory in kernel is not simple,
and implemnting HV services in kernel seems to me to be out of question, so i decied to do it from user space, more safe and easier
And we will need HUGEPAGE support for updater. I already tested it on my PS3 Linux and it works great One page is 16 MB large, more than enough for updating packages. The updater can allocate a huge page, store there the package, lock this page in memory so that swapper doesn’t move it to swap space, convert the address of the page to LPAR address and send it to Update Manager
I also added a new IOCTL to /dev/ps3ram character device – PS3RAM_IOCTL_USER_TO_LPAR_ADDR. It allows you to convert a user space memory address to LPAR address. We will need it for updater e.g., because updater has to send LPAR address of package to Update Manager.
Here is an example how to use it: #1585460 - Pastie
Have fun and report any bugs to me please.