RE: Possible ACPI abuse in Mellanox BlueField Gigabit Ethernet driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Andy,

We have 1 image common to all our board types. The ACPI tables are selected based on the board id. Some board types have PHY_INT pin connected to GPIO pin 9 and other boards have it connected to GPIO pin 12. So we have 2 ssdt.asl files:

// first file: PHY_INT -> GPIO pin 12
Device(OOB) {
        Name(_HID, "MLNXBF17")
        Name(_UID, 0)
        Name(_CCA, 1)
        Name (_CRS, ResourceTemplate () {
           // OOB Ethernet
           Memory32Fixed (ReadWrite, 0x03000000, 0x00000600)
           // mdio[9]
           Memory32Fixed (ReadWrite, 0x028004C8, 0x00000008)
           // gpio[0]
           Memory32Fixed (ReadWrite, 0x0280c000, 0x00000100)
           // OOB LLU
           Memory32Fixed (ReadWrite, 0x039C0000, 0x0000A100)
           // OOB PLU
           Memory32Fixed (ReadWrite, 0x04000000, 0x00001100)
           Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BF_RSH0_DEVICE_OOB_INT }
           Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive) { BF_RSH0_DEVICE_OOB_LLU_INT }
           Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BF_RSH0_DEVICE_OOB_PLU_INT }
           Interrupt (ResourceConsumer, Edge, ActiveHigh, Shared) { BF_RSH0_DEVICE_YU_INT }
  
           // GPIO PHY interrupt
           GpioInt (Edge, ActiveHigh, Exclusive, PullUp, , " \\_SB.GPI0") {12}
        }) // Name(_CRS)

// Second file: PHY_INT -> GPIO pin 9
Device(OOB) {
        Name(_HID, "MLNXBF17")
        Name(_UID, 0)
        Name(_CCA, 1)
        Name (_CRS, ResourceTemplate () {
           // OOB Ethernet
           Memory32Fixed (ReadWrite, 0x03000000, 0x00000600)
           // mdio[9]
           Memory32Fixed (ReadWrite, 0x028004C8, 0x00000008)
           // gpio[0]
           Memory32Fixed (ReadWrite, 0x0280c000, 0x00000100)
           // OOB LLU
           Memory32Fixed (ReadWrite, 0x039C0000, 0x0000A100)
           // OOB PLU
           Memory32Fixed (ReadWrite, 0x04000000, 0x00001100)
           Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BF_RSH0_DEVICE_OOB_INT }
           Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive) { BF_RSH0_DEVICE_OOB_LLU_INT }
           Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BF_RSH0_DEVICE_OOB_PLU_INT }
           Interrupt (ResourceConsumer, Edge, ActiveHigh, Shared) { BF_RSH0_DEVICE_YU_INT }
  
           // GPIO PHY interrupt
           GpioInt (Edge, ActiveHigh, Exclusive, PullUp, , " \\_SB.GPI0") {9}
        }) // Name(_CRS)

-----Original Message-----
From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> 
Sent: Thursday, August 12, 2021 10:14 AM
To: Linux GPIO <linux-gpio@xxxxxxxxxxxxxxx>; linux-acpi@xxxxxxxxxxxxxxx; Rafael J. Wysocki <rjw@xxxxxxxxxxxxx>; Linus Walleij <linus.walleij@xxxxxxxxxx>; Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx>
Cc: David Thompson <davthompson@xxxxxxxxxx>; Asmaa Mnebhi <asmaa@xxxxxxxxxx>; Liming Sun <limings@xxxxxxxxxx>; David S. Miller <davem@xxxxxxxxxxxxx>
Subject: Possible ACPI abuse in Mellanox BlueField Gigabit Ethernet driver

Hi!

>From time to time I do grep kernel for ACPI_RESOURCE_TYPE_GPIO usage.
Recently the drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_gpio.c
caught my eye.

Looking into the code I see that it looks like misunderstanding of how ACPI works with GPIOs. First of all, I would like to inform that this code has been properly reviewed neither by GPIO nor by ACPI maintainers. Second, before going it to the real conclusions (and potential revert of this), I would like to see the real ACPI tables for this and some explanations from the authors of the driver about GPIO usage here (from hw and sw perspectives).

It makes sense to discuss ASAP, otherwise I would really want to revert it.

--
With Best Regards,
Andy Shevchenko






[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux