NicoApi73 a écritNaziel a écritCAP_EX serait donc le registre pour l'AER.
Oui, mais c'est le seul lien que je n'arrive pas à faire
Bonjour,
Ca s'est vraiment la question qu'il me reste (en tout cas pour l'instant)
Bon, je progresse ...
Dans setpci, il y a :
· If the register is a part of a PCI capability, you can specify the name of the
capability to get the address of its first register. See the names starting with
`CAP_' or `ECAP_' in the --dumpregs output
Le registre auquel on fait appel, fait partie de la capability CAP_EX, et ce doit être le 8ième registre.
Et voila pourquoi le .w dans la commande
setpci -v -d 8086:a114 CAP_EXP+0x8.w=0xe
· Finally, you should append a width specifier .B, .W, or .L to choose how many bytes
(1, 2, or 4) should be transferred. The width can be omitted if you are referring
to a register by its name and the width of the register is well known.
On transfert 2 octets (word)
Mais je ne sais toujours pas ce qu'il y a dans CAP_EX :mad:
Ca y est, j'ai compris, c'est défini dans /usr/include/linux/pci_regs.h, le registre en question avec un offset de 8!
Ce qui nous intéresse fait partie des capabilités
/* PCI Express capability registers */
CAP_EX
Il y a peut être à faire quelque chose sur l'ASPM :
Dans la même capability, il y a :
#define PCI_EXP_LNKCTL 16 /* Link Control */
#define PCI_EXP_LNKCTL_ASPMC 0x0003 /* ASPM Control */
#define PCI_EXP_LNKCTL_ASPM_L0S 0x0001 /* L0s Enable */
#define PCI_EXP_LNKCTL_ASPM_L1 0x0002 /* L1 Enable */
#define PCI_EXP_LNKCTL_RCB 0x0008 /* Read Completion Boundary */
#define PCI_EXP_LNKCTL_LD 0x0010 /* Link Disable */
#define PCI_EXP_LNKCTL_RL 0x0020 /* Retrain Link */
#define PCI_EXP_LNKCTL_CCC 0x0040 /* Common Clock Configuration */
#define PCI_EXP_LNKCTL_ES 0x0080 /* Extended Synch */
#define PCI_EXP_LNKCTL_CLKREQ_EN 0x0100 /* Enable clkreq */
#define PCI_EXP_LNKCTL_HAWD 0x0200 /* Hardware Autonomous Width Disable */
#define PCI_EXP_LNKCTL_LBMIE 0x0400 /* Link Bandwidth Management Interrupt Enable */
#define PCI_EXP_LNKCTL_LABIE 0x0800 /* Link Autonomous Bandwidth Interrupt Enable */
A voir si c'est le bon registre. Le shift est de 16 pour accéder à ce registre. Il faut voir la configuration possible sur ce registre (il est également sur 2 octets)
Ou encore
/* ASPM L1 PM Substates */
si c'est L1 qui ne va pas
Je n'ai pas le temps de m'en occuper pour l'instant.