diff mbox

[U-Boot,v4,2/2] x86: Add a simple interrupt script to the README

Message ID 1439483777-7532-2-git-send-email-sjg@chromium.org
State Accepted
Delegated to: Simon Glass
Headers show

Commit Message

Simon Glass Aug. 13, 2015, 4:36 p.m. UTC
It is a bit tedious to figure out the interrupt configuration for a new
x86 platform. Add a script which can do this, based on the output of
'pci long'. This may be helpful in some cases.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v4:
- Adjust the PCI device output to decimal instead of hex

Changes in v3:
- Add new patch to add a simple interrupt script to the README

Changes in v2: None

 doc/README.x86 | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

Comments

Bin Meng Aug. 14, 2015, 6:31 a.m. UTC | #1
On Fri, Aug 14, 2015 at 12:36 AM, Simon Glass <sjg@chromium.org> wrote:
> It is a bit tedious to figure out the interrupt configuration for a new
> x86 platform. Add a script which can do this, based on the output of
> 'pci long'. This may be helpful in some cases.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

Tested running the scripts with gawk 4.0.0
Tested-by: Bin Meng <bmeng.cn@gmail.com>

But please see comments below.

>
> Changes in v4:
> - Adjust the PCI device output to decimal instead of hex
>
> Changes in v3:
> - Add new patch to add a simple interrupt script to the README
>
> Changes in v2: None
>
>  doc/README.x86 | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
>
> diff --git a/doc/README.x86 b/doc/README.x86
> index af2459c..b2ca108 100644
> --- a/doc/README.x86
> +++ b/doc/README.x86
> @@ -708,6 +708,21 @@ allocation and assignment will be done by U-Boot automatically. Now you can
>  enable CONFIG_GENERATE_PIRQ_TABLE for testing Linux kernel using i8259 PIC and
>  CONFIG_GENERATE_MP_TABLE for testing Linux kernel using local APIC and I/O APIC.
>
> +This script might be useful. If you feed it the output of 'pci long' from
> +U-Boot then it will generate a device tree fragment with the interrupt
> +configuration for each device:
> +
> +   $ cat console_output |awk '/PCI/ {device=$4} /interrupt line/ {line=$4} \
> +       /interrupt pin/ {pin = $4; if (pin != "0x00" && pin != "0xff") \
> +       {patsplit(device, bdf, "[0-9a-f]+"); \
> +       printf "PCI_BDF(%d, %d, %d) INT%c PIRQ%c\n", strtonum("0x" bdf[1]), \
> +       strtonum("0x" bdf[2]), bdf[3], strtonum(pin) + 64, 64 + strtonum(pin)}}'

Please mention the scripts require gawk 4.0.0 or newer version, as
patsplit is a new function introduced in 4.0.0. I compiled gawk from
the source and the scripts works.

> +
> +Example output:
> +   PCI_BDF(0, 2, 0) INTA PIRQA
> +   PCI_BDF(0, 3, 0) INTA PIRQA
> +...
> +
>  TODO List
>  ---------
>  - Audio
> --

Regards,
Bin
Simon Glass Aug. 14, 2015, 4:50 p.m. UTC | #2
On 14 August 2015 at 00:31, Bin Meng <bmeng.cn@gmail.com> wrote:
> On Fri, Aug 14, 2015 at 12:36 AM, Simon Glass <sjg@chromium.org> wrote:
>> It is a bit tedious to figure out the interrupt configuration for a new
>> x86 platform. Add a script which can do this, based on the output of
>> 'pci long'. This may be helpful in some cases.
>>
>> Signed-off-by: Simon Glass <sjg@chromium.org>
>> ---
>
> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
>
> Tested running the scripts with gawk 4.0.0
> Tested-by: Bin Meng <bmeng.cn@gmail.com>
>
> But please see comments below.
>
>>
>> Changes in v4:
>> - Adjust the PCI device output to decimal instead of hex
>>
>> Changes in v3:
>> - Add new patch to add a simple interrupt script to the README
>>
>> Changes in v2: None
>>
>>  doc/README.x86 | 15 +++++++++++++++
>>  1 file changed, 15 insertions(+)
>>
>> diff --git a/doc/README.x86 b/doc/README.x86
>> index af2459c..b2ca108 100644
>> --- a/doc/README.x86
>> +++ b/doc/README.x86
>> @@ -708,6 +708,21 @@ allocation and assignment will be done by U-Boot automatically. Now you can
>>  enable CONFIG_GENERATE_PIRQ_TABLE for testing Linux kernel using i8259 PIC and
>>  CONFIG_GENERATE_MP_TABLE for testing Linux kernel using local APIC and I/O APIC.
>>
>> +This script might be useful. If you feed it the output of 'pci long' from
>> +U-Boot then it will generate a device tree fragment with the interrupt
>> +configuration for each device:
>> +
>> +   $ cat console_output |awk '/PCI/ {device=$4} /interrupt line/ {line=$4} \
>> +       /interrupt pin/ {pin = $4; if (pin != "0x00" && pin != "0xff") \
>> +       {patsplit(device, bdf, "[0-9a-f]+"); \
>> +       printf "PCI_BDF(%d, %d, %d) INT%c PIRQ%c\n", strtonum("0x" bdf[1]), \
>> +       strtonum("0x" bdf[2]), bdf[3], strtonum(pin) + 64, 64 + strtonum(pin)}}'
>
> Please mention the scripts require gawk 4.0.0 or newer version, as
> patsplit is a new function introduced in 4.0.0. I compiled gawk from
> the source and the scripts works.

Updated.

Applied to u-boot-x86.
diff mbox

Patch

diff --git a/doc/README.x86 b/doc/README.x86
index af2459c..b2ca108 100644
--- a/doc/README.x86
+++ b/doc/README.x86
@@ -708,6 +708,21 @@  allocation and assignment will be done by U-Boot automatically. Now you can
 enable CONFIG_GENERATE_PIRQ_TABLE for testing Linux kernel using i8259 PIC and
 CONFIG_GENERATE_MP_TABLE for testing Linux kernel using local APIC and I/O APIC.
 
+This script might be useful. If you feed it the output of 'pci long' from
+U-Boot then it will generate a device tree fragment with the interrupt
+configuration for each device:
+
+   $ cat console_output |awk '/PCI/ {device=$4} /interrupt line/ {line=$4} \
+	/interrupt pin/ {pin = $4; if (pin != "0x00" && pin != "0xff") \
+	{patsplit(device, bdf, "[0-9a-f]+"); \
+	printf "PCI_BDF(%d, %d, %d) INT%c PIRQ%c\n", strtonum("0x" bdf[1]), \
+	strtonum("0x" bdf[2]), bdf[3], strtonum(pin) + 64, 64 + strtonum(pin)}}'
+
+Example output:
+   PCI_BDF(0, 2, 0) INTA PIRQA
+   PCI_BDF(0, 3, 0) INTA PIRQA
+...
+
 TODO List
 ---------
 - Audio