echo 1 > /sys/bus/pci/slots/[номер слота]/power изменяет значение регистра пространства конфигурации PCIe?

Seguramente la respuesta es simplemente

awk -F,0 'NF<5' file.csv

Use un delimitador de ",0" y cuando el número de campos sea inferior a 5, realice la acción predeterminada que es imprimir.

Lo probé en este archivo

gene,v1,v2,v3,v4,v5,v6,v7
gene1,0,1,5,0,0,4,100
gene2,1,0,0,0,5,210,2
gene3,0,0,0,0,6,0,0
gene4,0,0,0,4,6,0,0
gene5,0,1,0,4,6,0,0

Lo que arrojó este resultado

gene,v1,v2,v3,v4,v5,v6,v7
gene1,0,1,5,0,0,4,100
gene2,1,0,0,0,5,210,2

¡Pruébelo en línea!

2
26.09.2018, 13:00
1 ответ

Вот моя трассировка (дайте мне знать, если я ошибаюсь)

питание _запись _файл ()https://elixir.bootlin.com/linux/v4.10/source/drivers/pci/hotplug/pci_hotplug_core.c#L95

slot->ops->disable_slot(slot);

ops->disable_slot = disable_slot;

https://elixir.bootlin.com/linux/v4.10/source/drivers/pci/hotplug/pciehp_core.c#L107

static int disable_slot(struct hotplug_slot *hotplug_slot)
{
    struct slot *slot = hotplug_slot->private;

    return pciehp_sysfs_disable_slot(slot);
}

https://elixir.bootlin.com/linux/v4.10/source/drivers/pci/hotplug/pciehp_core.c#L167

retval = pciehp_disable_slot(p_slot);

remove_board(struct slot *p_slot)

https://elixir.bootlin.com/linux/v4.10/source/drivers/pci/hotplug/pciehp_ctrl.c#L135

наконец, мы получили:

void pciehp_power_off_slot(struct slot *slot)
{
    struct controller *ctrl = slot->ctrl;

    pcie_write_cmd(ctrl, PCI_EXP_SLTCTL_PWR_OFF, PCI_EXP_SLTCTL_PCC);
    ctrl_dbg(ctrl, "%s: SLOTCTRL %x write cmd %x\n", __func__,
         pci_pcie_cap(ctrl->pcie->port) + PCI_EXP_SLTCTL,
         PCI_EXP_SLTCTL_PWR_OFF);
}

https://elixir.bootlin.com/linux/v4.10/source/drivers/pci/hotplug/pciehp_hpc.c#L551

#define  PCI_EXP_SLTCTL_PWR_OFF        0x0400 /* Power Off */
#define PCI_EXP_SLTCTL      24  /* Slot Control */

https://github.com/torvalds/linux/blob/d01e12dd3f4227f1be5d7c5bffa7b8240787bec1/include/uapi/linux/pci_regs.h#L594

0x0400 ==> 10000000000 #бит 10 == 1 ==> Регистр управления контроллером мощности равен 1 в регистре управления слотом (смещение 18h == 24)

в соответствии со спецификацией PCIe о регистре управления контроллером питания:

0b Power On
1b Power Off

следовательно, да,

ядро ​​изменит регистр управления контроллером питания в регистре управления слотом.

2
27.01.2020, 22:17

Теги

Похожие вопросы