Andrey Smirnov 4dd0aa7120
feat: implement PCI device bus enumeration
Fixes #8826

From the QEMU VM:

```shell
$ talosctl -n 172.20.0.5 get pcidevice
NODE         NAMESPACE   TYPE        ID             VERSION   CLASS                       SUBCLASS                    VENDOR              PRODUCT
172.20.0.5   hardware    PCIDevice   0000:00:00.0   1         Bridge                      Host bridge                 Intel Corporation   82G33/G31/P35/P31 Express DRAM Controller
172.20.0.5   hardware    PCIDevice   0000:00:01.0   1         Display controller          VGA compatible controller
172.20.0.5   hardware    PCIDevice   0000:00:02.0   1         Network controller          Ethernet controller         Red Hat, Inc.       Virtio network device
172.20.0.5   hardware    PCIDevice   0000:00:03.0   1         Unclassified device                                     Red Hat, Inc.       Virtio RNG
172.20.0.5   hardware    PCIDevice   0000:00:04.0   1         Unclassified device                                     Red Hat, Inc.       Virtio memory balloon
172.20.0.5   hardware    PCIDevice   0000:00:05.0   1         Communication controller    Communication controller    Red Hat, Inc.       Virtio console
172.20.0.5   hardware    PCIDevice   0000:00:06.0   1         Generic system peripheral   System peripheral           Intel Corporation   6300ESB Watchdog Timer
172.20.0.5   hardware    PCIDevice   0000:00:07.0   1         Mass storage controller     SCSI storage controller     Red Hat, Inc.       Virtio block device
172.20.0.5   hardware    PCIDevice   0000:00:1f.0   1         Bridge                      ISA bridge                  Intel Corporation   82801IB (ICH9) LPC Interface Controller
172.20.0.5   hardware    PCIDevice   0000:00:1f.2   1         Mass storage controller     SATA controller             Intel Corporation   82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode]
172.20.0.5   hardware    PCIDevice   0000:00:1f.3   1         Serial bus controller       SMBus                       Intel Corporation   82801I (ICH9 Family) SMBus Controller
```

```yaml
node: 172.20.0.5
metadata:
    namespace: hardware
    type: PCIDevices.hardware.talos.dev
    id: 0000:00:1f.3
    version: 1
    owner: hardware.PCIDevicesController
    phase: running
    created: 2024-05-30T12:09:05Z
    updated: 2024-05-30T12:09:05Z
spec:
    class: Serial bus controller
    subclass: SMBus
    vendor: Intel Corporation
    product: 82801I (ICH9 Family) SMBus Controller
    class_id: "0x0c"
    subclass_id: "0x05"
    vendor_id: "0x8086"
    product_id: "0x2930"
```

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2024-05-31 20:56:16 +04:00

58 lines
1.3 KiB
Protocol Buffer
Executable File

syntax = "proto3";
package talos.resource.definitions.hardware;
option go_package = "github.com/siderolabs/talos/pkg/machinery/api/resource/definitions/hardware";
// MemoryModuleSpec represents a single Memory.
message MemoryModuleSpec {
uint32 size = 1;
string device_locator = 2;
string bank_locator = 3;
uint32 speed = 4;
string manufacturer = 5;
string serial_number = 6;
string asset_tag = 7;
string product_name = 8;
}
// PCIDeviceSpec represents a single processor.
message PCIDeviceSpec {
string class = 1;
string subclass = 2;
string vendor = 3;
string product = 4;
string class_id = 5;
string subclass_id = 6;
string vendor_id = 7;
string product_id = 8;
}
// ProcessorSpec represents a single processor.
message ProcessorSpec {
string socket = 1;
string manufacturer = 2;
string product_name = 3;
uint32 max_speed = 4;
uint32 boot_speed = 5;
uint32 status = 6;
string serial_number = 7;
string asset_tag = 8;
string part_number = 9;
uint32 core_count = 10;
uint32 core_enabled = 11;
uint32 thread_count = 12;
}
// SystemInformationSpec represents the system information obtained from smbios.
message SystemInformationSpec {
string manufacturer = 1;
string product_name = 2;
string version = 3;
string serial_number = 4;
string uuid = 5;
string wake_up_type = 6;
string sku_number = 7;
}