Ravi,
Para responder à sua pergunta, estou supondo que você queira modificar o código-fonte do hypervisor e que você é um programador experiente do kernel do Linux. Se você não tem experiência com a codificação do kernel, provavelmente deve primeiro tentar um projeto mais simples de codificação do kernel para ganhar alguma experiência. Explicar como modificar o código da memória sombra do Xen está além do escopo do AskUbuntu. A resposta certamente não se encaixa em uma dessas respostas. O que você quer fazer é muito complicado.
Primeiro de tudo, struct page_info não é uma lista. É um tipo de dado abstrato do bloco de construção que é usado em mais de uma lista no hypervisor Xen. Então, por favor, diga-nos em qual lista você está olhando e que usa page_info.
Como você já viu, há uma contagem de referência em uma estrutura page_info, mas ela não pode ser usada diretamente para fazer o que você deseja, AFAIK. O ponteiro de volta _domain que você vê como parte da estrutura page_info é definido apenas para páginas que não estão sendo usadas como páginas de sombra.
O Xen pode ser configurado para fazer o que você diz, alocar toda a memória quando o convidado é iniciado, mas também pode ser configurado para usar balão e alocar memória mais tarde, tanto para cima quanto para baixo. Para saber mais sobre o driver de balão e esse tipo de alocação de memória, consulte o wiki Xen no link .
Há também um recurso chamado memória transcendental, conhecido como "tmem" na origem. Se configurado para usar o tmem, o Xen tirará a memória de um convidado que não o esteja usando, para fornecê-lo a outro convidado que precise dele mais. Portanto, há mais trabalho se você quiser modificar o hipervisor Xen para rastrear o acesso de convidado de toda a memória de sombra, executando em todos os modos possíveis de gerenciamento de memória.
Se você não está codificando o kernel, mas apenas solucionando problemas, é possível conectar um terminal serial ao hardware que está executando o Xen (consulte o wiki do Xen sobre como fazer isso) para ver o uso da memória. Uma vez que você tenha o terminal serial rodando corretamente, você pode não apenas falar com o dom0, mas apertando Ctrl-A 3 vezes, você pode falar com o hypervisor diretamente. Pressione "h" para obter uma lista de ajuda de comandos.
Atenciosamente,
Segfaultreloaded