Archives de catégorie : La vie, la vraie…

Là où je parle de tout et n’importe quoi…

Patch SLIC pour Seabios.

Yop!

Petit patch pour rajouter une injection direct d’un dump de table SLIC dans la table acpi de la machine virtuelle sans modifier kvm/qemu.
Ça copie aussi oem_id et oem_table_id de la table SLIC dans la table RSDT.

Voici le diff.

--- acpi.c.orig	2011-12-24 18:03:11.346256959 +0100
+++ acpi.c	2011-12-24 17:58:07.368750605 +0100
@@ -628,6 +628,11 @@

     u16 i, external_tables = qemu_cfg_acpi_additional_tables();

+    #define SLIC_SIGNATURE 0x43494C53 // SLIC
+    #define HACK_SLIC_SIGNATURE 0x43314C35 // HACK SLIC
+    struct acpi_table_header *slic;
+    slic = 0;
+
     for(i = 0; i < external_tables; i++) {
         u16 len = qemu_cfg_next_acpi_table_len();
         void *addr = malloc_high(len);
@@ -635,7 +640,13 @@
             warn_noalloc();
             continue;
         }
-        ACPI_INIT_TABLE(qemu_cfg_next_acpi_table_load(addr, len));
+        struct acpi_table_header *acpi_ext_table;
+        acpi_ext_table = qemu_cfg_next_acpi_table_load(addr, len);
+        if (acpi_ext_table->signature == HACK_SLIC_SIGNATURE) {
+                acpi_ext_table = acpi_ext_table+1;
+                slic = acpi_ext_table;
+        }
+        ACPI_INIT_TABLE(acpi_ext_table);
         if (tbl_idx == MAX_ACPI_TABLES) {
             warn_noalloc();
             break;
@@ -653,7 +664,19 @@
     memset(rsdt, 0, rsdt_len);
     memcpy(rsdt->table_offset_entry, tables, sizeof(u32) * tbl_idx);

-    build_header((void*)rsdt, RSDT_SIGNATURE, rsdt_len, 1);
+    if (slic->signature == SLIC_SIGNATURE){
+        rsdt->signature = RSDT_SIGNATURE;
+        rsdt->length = cpu_to_le32(rsdt_len);
+        rsdt->revision = 1;
+        memcpy(rsdt->oem_id, slic->oem_id, 6);
+        memcpy(rsdt->oem_table_id, slic->oem_table_id, 8);
+        memcpy(rsdt->asl_compiler_id, CONFIG_APPNAME4, 4);
+        rsdt->oem_revision = cpu_to_le32(1);
+        rsdt->asl_compiler_revision = cpu_to_le32(1);
+        rsdt->checksum -= checksum(rsdt, rsdt_len);
+    } else {
+        build_header((void*)rsdt, RSDT_SIGNATURE, rsdt_len, 1);
+    }

     // Build rsdp pointer table
     memset(rsdp, 0, sizeof(*rsdp));

acpi_slic.patch bios.bin


Merci, pour les commentaires.

ipv6

L’ipv6 est mort chez moi…

Mais pour ceux qui look en ipv6, j’ai rajouté une ORT sur http://ipv6.mrtaz.net

Voilà RIP…

Auchan Box!

Ça y est!
Je suis chez Auchan Box.
19,99€ pour du 100/5Mbps, ça c’est le pied!
Pour la voip, j’ai opté pour le forfait ovh à 1,20€ par mois avec un PAP2T de Linksys que j’ai acheté.
Et la tv, une Tvixbox avec double tuner car on ne regarde que la TNT.
Franchement, les opérateurs Adsl se gavent…
1er test de bande passante plus de 80Mbps en dl…