Jump to content

[SSDT Basic] Ottimizzazioni possibili


A23SS4NDRO

Recommended Posts

Ciao a tutti, premetto che la versione di SSDT Basic v 1.0.0 è già perfetta in se e funziona benissimo... Per mettere la ciliegina sulla torta vorrei implementarci queste due modifiche

-Ho aggiunto le CPU "_PR.C000" e "_PR.P000"

-Ho trovato il modo per togliere i 2 warnings, i 3 remarks, 1 Optimizations.

 

 

Prima questi erano i warn/remarks che dava (da SSDT Originale preso dalla sezione downloads):

 

Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20190509
Copyright (c) 2000 - 2019 Intel Corporation

SSDT-Basic.dsl     45:     Method (PMPM, 4, NotSerialized)
Remark   2146 -                      ^ Method Argument is never used (Arg0)

SSDT-Basic.dsl     45:     Method (PMPM, 4, NotSerialized)
Remark   2146 -                      ^ Method Argument is never used (Arg1)

SSDT-Basic.dsl     45:     Method (PMPM, 4, NotSerialized)
Remark   2146 -                      ^ Method Argument is never used (Arg3)

SSDT-Basic.dsl    243:             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
Warning  3115 -                              ^ Not all control paths return a value (_DSM)

SSDT-Basic.dsl    243:             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
Warning  3107 -                              ^ Reserved method must return a value (Integer/String/Buffer/Package/Reference required for _DSM)

ASL Input:     SSDT-Basic.dsl -   14956 bytes    273 keywords    545 source lines
AML Output:    SSDT-Basic.aml -    2811 bytes    203 opcodes      70 named objects

Compilation successful. 0 Errors, 2 Warnings, 3 Remarks, 1 Optimizations

 

Dopo:

 

Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20190509
Copyright (c) 2000 - 2019 Intel Corporation

ASL Input:     SSDT-Basic.dsl -   14846 bytes    274 keywords    547 source lines
AML Output:    SSDT-Basic.aml -    2789 bytes    204 opcodes      70 named objects

Compilation successful. 0 Errors, 0 Warnings, 0 Remarks, 0 Optimizations

 

 

La prima domanda che mi veniva era, forse dico una castroneria, ma perché il metodo PMPM ha bisogno di 4 argomenti se ne serve solo 1 (difatti nei remarks dice proprio che solo uno tra i 4 argomenti assegnati viene usato)

 

L'ho sistemato e sono riuscito a risolvere sia i warn, che i remarks, per quanto riguarda le optimizations quando dal .dsl sostituisco 0x01 con "One" e compilo allora ci sono 0 optimizations, ma quando poi lo ridecompilo dall'appena fatto .aml e quando esce il nuovo .dsl, riaprendolo ritorna come prima, da "One" che avevo messo a "0x01" forse per colpa del decompilatore, quindi quando ricompilo quest'ultimo ritorna l'Optimization per il fatto che prima il decompilatore ha risostituito One a 0x01 nella riga 386, ma non conta molto ecco, alla fine è solo una Optimization... 0x01 è uguale a One alla fine

 

 

Volevo farvelo vedere per sapere che ne pensate, e se piace, vorrei che ci fosse anche l'approvazione di @Gengik84 cui ovviamente vanno tutti i credits

 

Quindi se è tutto ok, con una specie di "pull request" :classic_biggrin: forse lo integrerei in una v1.0.1, se siete contenti e se avete qualcosa magari da dire che non vi piace, o che ho fatto male, ben venga accetto tutte le critiche che siano costruttive :classic_smile:

 

Grazie

SSDT-Basic.dsl.zip

Edited by A23SS4NDRO
  • Thanks 1
Link to comment
Share on other sites

  • Supervisor.

Riguardo alle CPU, sarebbe interessante capire come funziona il power management su AMD. Da quanto ho capito, funziona in modo totalmente diverso rispetto a Intel, venendo gestito direttamente dal bios. In quel caso, non so quanto sia utile caricare X86PlatformPlugin.

Link to comment
Share on other sites

12 minutes ago, Gengik84 said:

ho perso il conto di quante volte ho detto che warning sono del tutto irrilevanti

Più che altro mi chiedevo qual era il motivo per cui PMPM aveva necessità di avere 4 Args, tra cui

 

"Arg0, Arg1, Arg2, Arg3"

 

Se poi in realtà ne serve solo 1 (a quanto dice il compilatore) o sbaglio?

 

Link to comment
Share on other sites

  • Administrators

Ale va bene così.

Se è stato messo un motivo c'è sia per ora che in caso per un domani 😉

Altrimenti io sono "fesso" come sono fessi tutti quelli che scrivono le ACPI OEM?

se guardi li a warning e remark... ci si arriva a natale 😂

 

Poi altro esempio e senza offesa.. riguardo alla tua modifica di un altro mio ssdt...

hai messo un external per un method _dsm... questo non serve e non ha veramente senso

di fatto non è modificabile

Link to comment
Share on other sites

  • Supervisor.

In informatica ci sono vari modi di ottenere gli stessi risultati.

Spesso i compilatori sono ridondanti, soprattutto nel caso di aml che è un linguaggio molto “libero”.

L’idea alla base è quella di seguire le specifiche acpi nel caso di PMPM, ma ci sono molti altri modi per ottenere lo stesso risultato.
 

Per come @Gengik84 ha strutturato PMPM, ci sono margini per fare aggiunte in futuro.

  • Like 2
Link to comment
Share on other sites

2 hours ago, Gengik84 said:

ho perso il conto di quante volte ho detto che warning sono del tutto irrilevanti

D'accordo, ma penso che tu sia d'accordo che se segui lo standard ACPICA 6.3, ti stai alle loro regole 😄

Sia chiaro: la funzionalità è sempre la stessa ma in informatica si cerca di utilizzare il minimo indispensabile per ottenere quel risultato e sinceramente non capisco perchè tu abbia aggiunto degli argomenti che di fatto non vengono utilizzati per niente. Sarò felice di avere una tua risposta in merito 

In ogni caso è bene che queste cose vengano documentate adeguatamente: #shareyourknowledge

1 hour ago, Gengik84 said:

Ale va bene così.

Se è stato messo un motivo c'è sia per ora che in caso per un domani 😉

Altrimenti io sono "fesso" come sono fessi tutti quelli che scrivono le ACPI OEM?

se guardi li a warning e remark... ci si arriva a natale 😂

 

Poi altro esempio e senza offesa.. riguardo alla tua modifica di un altro mio ssdt...

hai messo un external per un method _dsm... questo non serve e non ha veramente senso

di fatto non è modificabile

Concordo pienamente sul fatto che coloro che scrivo le ACPI OEM sono "fessi". Ci sono diecimila warning e forse dovuti ad una questione di "compatibilità" con i vari OS (ipotizzo (???))

Link to comment
Share on other sites

  • Administrators
5 minuti fa, dreamwhite ha scritto:

D'accordo, ma penso che tu sia d'accordo che se segui lo standard ACPICA 6.3, ti stai alle loro regole 😄

Tu vieni a dirmi questo?

beh fossi in te mi preoccuperei in primis di non demolire nel vero senso della parola i DSDT... solo inseguendo "false leggende"... e trascurando proprio quello che tu stesso ora stai citando e non solo... :default_hysterical:

 

6 minuti fa, dreamwhite ha scritto:

Sarò felice di avere una tua risposta in merito 

 

Devo per forza dire a cosa sto lavorando, come, perchè, etc? Quale sarebbe l'obbligo?

Quando sarà il momento, e se lo vorrò .. spiegherò... ma senza offesa non ho e non voglio di certo obblighi.

Non ho solo da pensare a questo del resto....

Link to comment
Share on other sites

1 minute ago, Gengik84 said:

Tu vieni a dirmi questo?

beh fossi in te mi preoccuperei in primis di non demolire nel vero senso della parola i DSDT... solo inseguendo "false leggende"... e trascurando proprio quello che tu stesso ora stai citando e non solo... :default_hysterical:

Wait, non è mia intenzione offenderti ne screditare il tuo lavoro che apprezzo giorno dopo giorno, ma semplicemente adeguarsi agli standard che ci detta ACPICA (esempio: cercare ove possibile di usare la keyword Device al posto di Processor, così come usare solo _HID piuttosto che _ADR)

 

3 minutes ago, Gengik84 said:

Devo per forza dire a cosa sto lavorando, come, perchè, etc? Quale sarebbe l'obbligo?

Quando sarà il momento, e se lo vorrò .. spiegherò... ma senza offesa non ho e non voglio di certo obblighi.

Non ho solo da pensare a questo del resto....

C'è stato decisamente un fraintendimento. Col mio "Sarò felice di avere una tua risposta in merito" mi riferivo al perchè dell'utilizzo di 4 argomenti della funzione PMPM, dal momento che ne viene utilizzato solo ed esclusivamente uno (almeno all'interno dell'SSDT in questione). 

Obblighi non ce ne sono e mai ce ne saranno, semplicemente era una curiosità personale sapere la ragione arcana dietro a questi 4 argomenti...  🕊️

Link to comment
Share on other sites

  • Administrators

@dreamwhite ma ti ho accennato già diciamo...

fatto per aggiunte future... 

quando? non so dirtelo, ho da fare veramente troppe cose, periodo incasinato e non posso stare sempre dietro a questo

anche volendo, proprio non riuscirei materialmente

oltre a questo warning e remark sono ininfluenti... c'è se sono a trilioni ovunque su acpi oem, quindi scritte da determinate persone.

quello può essere semplicemente risolto ma non cambierebbe nulla assolutamente... forse un millesimo di secondo in "lettura" .. tutto qui 

Link to comment
Share on other sites

1 minute ago, Gengik84 said:

@dreamwhite ma ti ho accennato già diciamo...

fatto per aggiunte future... 

quando? non so dirtelo, ho da fare veramente troppe cose, periodo incasinato e non posso stare sempre dietro a questo

anche volendo, proprio non riuscirei materialmente

oltre a questo warning e remark sono ininfluenti... c'è se sono a trilioni ovunque su acpi oem, quindi scritte da determinate persone.

quello può essere semplicemente risolto ma non cambierebbe nulla assolutamente... forse un millesimo di secondo in "lettura" .. tutto qui 

Sisi infatti. La mia ipotesi (e penso che forse sia la più plausibile) è che le ACPI devono cercare di interfacciarsi con la maggior parte degli OS aka: cerchiamo di garantire compatibilità con quello che è possibile

  • +1 1
Link to comment
Share on other sites

2 hours ago, Gengik84 said:

Poi altro esempio e senza offesa..

Tranquillo, non mi offendo anzi l'ho postato consapevolmente, altrimenti non potevo compilare con successo il nuovo SSDT quando mi serviva aggiungere

 

If (_OSI ("Darwin")

 

{

 

}

 

Come condizione di caricamento di tutto l'ssdt, o alcune correzioni come ad esempio PR00 come ProcessorObj al posto di come era stock (DeviceObj)

 

mi hai mostrato che si può usare il comando iasl per fare la stessa cosa ignorando gli errori sulle external references, ma compilare da maciasl mi è più comodo a volte anche per questioni di velocità

 

Inoltre in compilazione mi permette di salvarla tale tabella senza errori, poi ovviamente quando si ridecompila quei metodi _DSM tra le external references non ricompaiono nell'ssdt decompilato (perché appunto neanche hanno senso mi pare di aver capito)

 

Per concludere insomma, non me ne vergogno perché l'ho fatto con cognizione di causa

 

Link to comment
Share on other sites

39 minutes ago, Gengik84 said:

Devo per forza dire a cosa sto lavorando, come, perchè, etc? Quale sarebbe l'obbligo?

Riguardo a questo invece, ci tenevo a dire che nessuno di noi è costretto a condividere/nascondere nulla, non siamo sotto regimi dittatoriali e ritengo che la libertà di espressione sia un prerequisito fondamentale per il rispetto reciproco

 

Più che altro la questione si focalizza più sul motivo per cui esistono forum, filosofie come quella dell'opensource, progetti globali come il kernel di Linux, firmware come tianocore, eccetera:

 

Per la condivisione della conoscenza

 

 

Se mi chiedo il perché di qualcosa, vorrei precisare che non è perché non mi fido del tuo lavoro, anzi lo ammiro.

 

In realtà, siccome io (come tutti noi) siamo partiti da zero, cercando di conoscere, attratto quindi dalla curiosità che induce ad interrogarmi sul perché è così, mi ritrovo a fare domande per chiedere chiarimenti per essere un utente consapevole, e non un "utonto"

 

Per questo faccio domande, non per screditare ma per cercare di capirne di più.

Su questo si basa il metodo scientifico, si fanno delle sensate esperienze e delle necessarie dimostrazioni diceva un tale, si parte da ipotesi più o meno vere, ci si pone delle domande e si cerca di capire il perché

 

Spero che il mio intento in materia sia stato chiaro, quello che so cerco di scriverlo in guide, forum, consigli, raccomandazioni - e cerco di evitare più che posso di lasciare le cose ingiustificate o in virtù di una conoscenza che non abbia fondamenti o spiegazioni esplicite

  • +1 1
Link to comment
Share on other sites

  • 4 months later...
  • 2 months later...

Aggiornamento:

 

Dagli ultimi update di iasl, se mancano le External reference sui metodi _STA, il compiler si lamenta e li tratta come errori (non come warnings)

 

Ho aggiunto le mancanti external references qui, ovviamente corretta con l'ultima versione di iasl

 

image.png.601a4ea01b71b097274398db03db7635.png

 

Poi riguardo ad _ADR o _HID di PLNF, come sul repository di OpenCore, ho commentato _ADR

 

Dopo la modifica:

image.png.47f3a7a56f4f5ecff0504328082d8d0f.png

SSDT-Basic.dsl.zip

Edited by A23SS4NDRO
Link to comment
Share on other sites

9 minutes ago, Gengik84 said:

compila quello che hai modificato... decompilalo... ricompilalo...

Il decompilatore (o il compilatore) si "dimentica" di alcune external references immesse, semmai poi lo segnalo ad acpica sul loro repository

Quelle che non vengono mantenute nel processo di compilazione/decompilazione, sono LPC0.EC0, LPCB.EC0, ECDV ed H_EC

 

 

Tuttavia queste aggiunte che ho fatto sopravvivono al processo di compilazione/decompilazione, non risultando più come "Illegal forward references" tra cui:


 

External (_SB_.PCI0.IMEI, DeviceObj)

External (_SB_.PCI0.LPCB.PMCR, DeviceObj)

External (_SB_.PCI0.LPCB.EC__, DeviceObj)

External (_SB_.PC00.LPC0.EC__, DeviceObj)

sono quelle che non danno più problemi

 

 

Prima: (8 errors)

image.png.601a4ea01b71b097274398db03db7635.png

 

Dopo: (4 errors)

 

image.thumb.png.205e6eb63aa1f4e87a1317e74aae7c7e.png

 

 

Link to comment
Share on other sites

  • Administrators

si appunto, il codice va bene ed è corretto che sia così alla fine

Ignora... 🙂

 

3 minuti fa, A23SS4NDRO ha scritto:

Il decompilatore (o il compilatore) si "dimentica" di alcune external references immesse, semmai poi lo segnalo ad acpica sul loro repository

eviterei di dare colpe a acpica sempre a prescindere.. come è stato "fatto" recentemente anche... quando le cose sono di fatto sempre state così...

questo in generale e non mi sto riferendo a te 

maciasl ha innumerevoli bug, ma l'applicazione stessa e non iasl.. per dire..

Link to comment
Share on other sites

  • 4 weeks later...

Abbiamo degli aggiornamenti da https://github.com/SchmErik che sta migliorando la situazione per queste external references perse per strada, tuttavia a me sembra che compilando dal sorgente la sua ultima PR, il problema permanga (sto usando iasl da riga di comando copiato in /usr/local/bin)

 

Vi allego un precompilato ed il codice sorgente con la PR dentro, @Gengik84 e @foskvs facciamogli sapere se è cambiato qualcosa

 

image.thumb.png.f4ff140b8b98e2ac316307eff36a8fcf.png

 

acpica-537a03cc428cc68dbd0578e4c65effb51cfbd6de.zip iasl-commit-537a03c.zip

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • There are no registered users currently online
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.