Re: RE: [PATCH 2/3] ACPICA: MADT: Add LoongArch APICs support

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

 



Hi, Moore,

> -----原始邮件-----
&gt; 发件人: "Moore, Robert" <robert.moore@xxxxxxxxx>
&gt; 发送时间: 2021-07-09 05:35:28 (星期五)
&gt; 收件人: "Huacai Chen" <chenhuacai@xxxxxxxxxxx>, "Rafael J . Wysocki" <rjw@xxxxxxxxxxxxx>, "Len Brown" <lenb@xxxxxxxxxx>, "Erik Kaneda" <erik.kaneda@xxxxxxxxx>
&gt; 抄送: "linux-acpi@xxxxxxxxxxxxxxx" <linux-acpi@xxxxxxxxxxxxxxx>, "devel@xxxxxxxxxx" <devel@xxxxxxxxxx>, "Xuefeng Li" <lixuefeng@xxxxxxxxxxx>, "Jiaxun Yang" <jiaxun.yang@xxxxxxxxxxx>, "Jianmin Lv" <lvjianmin@xxxxxxxxxxx>
&gt; 主题: RE: [PATCH 2/3] ACPICA: MADT: Add LoongArch APICs support
&gt; 
&gt; For legal reasons, we can't pre-release any upcoming ACPI spec changes in ACPICA.
That's OK, we can wait.

Huacai
&gt; 
&gt; -----Original Message-----
&gt; From: Huacai Chen <chenhuacai@xxxxxxxxxxx> 
&gt; Sent: Monday, July 05, 2021 5:42 AM
&gt; To: Rafael J . Wysocki <rjw@xxxxxxxxxxxxx>; Len Brown <lenb@xxxxxxxxxx>; Moore, Robert <robert.moore@xxxxxxxxx>; Erik Kaneda <erik.kaneda@xxxxxxxxx>
&gt; Cc: linux-acpi@xxxxxxxxxxxxxxx; devel@xxxxxxxxxx; Xuefeng Li <lixuefeng@xxxxxxxxxxx>; Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx>; Huacai Chen <chenhuacai@xxxxxxxxxxx>; Jianmin Lv <lvjianmin@xxxxxxxxxxx>
&gt; Subject: [PATCH 2/3] ACPICA: MADT: Add LoongArch APICs support
&gt; 
&gt; LoongArch-specific interrupt controllers (similar to APIC) are added in the next revision of ACPI Specification (current revision is 6.4), which including CORE_PIC (CPUINTC), LIO_PIC (LIOINTC), EIO_PIC (EIOINTC), HT_PIC (HTVECINTC), BIO_PIC (PCHINTC), LPC_PIC (PCHLPC) and MSI_PIC (PCHMSI). This patch add their definition and handlings.
&gt; 
&gt; Reference: https://mantis.uefi.org/mantis/view.php?id=2203
&gt; Signed-off-by: Jianmin Lv <lvjianmin@xxxxxxxxxxx>
&gt; Signed-off-by: Huacai Chen <chenhuacai@xxxxxxxxxxx>
&gt; ---
&gt;  drivers/acpi/tables.c |  10 ++++
&gt;  include/acpi/actbl2.h | 123 +++++++++++++++++++++++++++++++++++++++++-
&gt;  2 files changed, 132 insertions(+), 1 deletion(-)
&gt; 
&gt; diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c index a37a1532a575..5943ae4f76bb 100644
&gt; --- a/drivers/acpi/tables.c
&gt; +++ b/drivers/acpi/tables.c
&gt; @@ -208,6 +208,16 @@ void acpi_table_print_madt_entry(struct acpi_subtable_header *header)
&gt;  		}
&gt;  		break;
&gt;  
&gt; +	case ACPI_MADT_TYPE_CORE_PIC:
&gt; +		{
&gt; +			struct acpi_madt_core_pic *p =
&gt; +			    (struct acpi_madt_core_pic *)header;
&gt; +			pr_debug("CORE PIC (processor_id[0x%02x] core_id[0x%02x] %s)\n",
&gt; +				 p-&gt;processor_id, p-&gt;core_id,
&gt; +				 (p-&gt;flags &amp; ACPI_MADT_ENABLED) ? "enabled" : "disabled");
&gt; +		}
&gt; +		break;
&gt; +
&gt;  	default:
&gt;  		pr_warn("Found unsupported MADT entry (type = 0x%x)\n",
&gt;  			header-&gt;type);
&gt; diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h index 2069ac38a4e2..fd6d0b440c4b 100644
&gt; --- a/include/acpi/actbl2.h
&gt; +++ b/include/acpi/actbl2.h
&gt; @@ -571,7 +571,14 @@ enum acpi_madt_type {
&gt;  	ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR = 14,
&gt;  	ACPI_MADT_TYPE_GENERIC_TRANSLATOR = 15,
&gt;  	ACPI_MADT_TYPE_MULTIPROC_WAKEUP = 16,
&gt; -	ACPI_MADT_TYPE_RESERVED = 17	/* 17 and greater are reserved */
&gt; +	ACPI_MADT_TYPE_CORE_PIC = 17,
&gt; +	ACPI_MADT_TYPE_LIO_PIC = 18,
&gt; +	ACPI_MADT_TYPE_HT_PIC = 19,
&gt; +	ACPI_MADT_TYPE_EIO_PIC = 20,
&gt; +	ACPI_MADT_TYPE_MSI_PIC = 21,
&gt; +	ACPI_MADT_TYPE_BIO_PIC = 22,
&gt; +	ACPI_MADT_TYPE_LPC_PIC = 23,
&gt; +	ACPI_MADT_TYPE_RESERVED = 24	/* 24 and greater are reserved */
&gt;  };
&gt;  
&gt;  /*
&gt; @@ -801,6 +808,120 @@ struct acpi_madt_multiproc_wakeup_mailbox {
&gt;  
&gt;  #define ACPI_MP_WAKE_COMMAND_WAKEUP    1
&gt;  
&gt; +/* Values for Version field above */
&gt; +
&gt; +enum acpi_madt_core_pic_version {
&gt; +	ACPI_MADT_CORE_PIC_VERSION_NONE = 0,
&gt; +	ACPI_MADT_CORE_PIC_VERSION_V1 = 1,
&gt; +	ACPI_MADT_CORE_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
&gt; +};
&gt; +
&gt; +enum acpi_madt_lio_pic_version {
&gt; +	ACPI_MADT_LIO_PIC_VERSION_NONE = 0,
&gt; +	ACPI_MADT_LIO_PIC_VERSION_V1 = 1,
&gt; +	ACPI_MADT_LIO_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
&gt; +};
&gt; +
&gt; +enum acpi_madt_eio_pic_version {
&gt; +	ACPI_MADT_EIO_PIC_VERSION_NONE = 0,
&gt; +	ACPI_MADT_EIO_PIC_VERSION_V1 = 1,
&gt; +	ACPI_MADT_EIO_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
&gt; +};
&gt; +
&gt; +enum acpi_madt_ht_pic_version {
&gt; +	ACPI_MADT_HT_PIC_VERSION_NONE = 0,
&gt; +	ACPI_MADT_HT_PIC_VERSION_V1 = 1,
&gt; +	ACPI_MADT_HT_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
&gt; +};
&gt; +
&gt; +enum acpi_madt_bio_pic_version {
&gt; +	ACPI_MADT_BIO_PIC_VERSION_NONE = 0,
&gt; +	ACPI_MADT_BIO_PIC_VERSION_V1 = 1,
&gt; +	ACPI_MADT_BIO_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
&gt; +};
&gt; +
&gt; +enum acpi_madt_msi_pic_version {
&gt; +	ACPI_MADT_MSI_PIC_VERSION_NONE = 0,
&gt; +	ACPI_MADT_MSI_PIC_VERSION_V1 = 1,
&gt; +	ACPI_MADT_MSI_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
&gt; +};
&gt; +
&gt; +enum acpi_madt_lpc_pic_version {
&gt; +	ACPI_MADT_LPC_PIC_VERSION_NONE = 0,
&gt; +	ACPI_MADT_LPC_PIC_VERSION_V1 = 1,
&gt; +	ACPI_MADT_LPC_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
&gt; +};
&gt; +
&gt; +/* Core Interrupt Controller */
&gt; +
&gt; +struct acpi_madt_core_pic {
&gt; +	struct acpi_subtable_header header;
&gt; +	u32 processor_id;
&gt; +	u32 core_id;
&gt; +	u32 flags;
&gt; +	u8 version;
&gt; +};
&gt; +
&gt; +/* Legacy I/O Interrupt Controller */
&gt; +
&gt; +struct acpi_madt_lio_pic {
&gt; +	struct acpi_subtable_header header;
&gt; +	u64 address;
&gt; +	u16 size;
&gt; +	u8 cascade[2];
&gt; +	u32 cascade_map[2];
&gt; +	u8 version;
&gt; +};
&gt; +
&gt; +/* Extend I/O Interrupt Controller */
&gt; +
&gt; +struct acpi_madt_eio_pic {
&gt; +	struct acpi_subtable_header header;
&gt; +	u8 cascade;
&gt; +	u8 version;
&gt; +};
&gt; +
&gt; +/* HT Interrupt Controller */
&gt; +
&gt; +struct acpi_madt_ht_pic {
&gt; +	struct acpi_subtable_header header;
&gt; +	u64 address;
&gt; +	u16 size;
&gt; +	u8 cascade[8];
&gt; +	u8 version;
&gt; +};
&gt; +
&gt; +/* Bridge I/O Interrupt Controller */
&gt; +
&gt; +struct acpi_madt_bio_pic {
&gt; +	struct acpi_subtable_header header;
&gt; +	u64 address;
&gt; +	u16 size;
&gt; +	u16 id;
&gt; +	u16 gsi_base;
&gt; +	u8 version;
&gt; +};
&gt; +
&gt; +/* MSI Interrupt Controller */
&gt; +
&gt; +struct acpi_madt_msi_pic {
&gt; +	struct acpi_subtable_header header;
&gt; +	u64 msg_address;
&gt; +	u32 start;
&gt; +	u32 count;
&gt; +	u8 version;
&gt; +};
&gt; +
&gt; +/* LPC Interrupt Controller */
&gt; +
&gt; +struct acpi_madt_lpc_pic {
&gt; +	struct acpi_subtable_header header;
&gt; +	u64 address;
&gt; +	u16 size;
&gt; +	u8 cascade;
&gt; +	u8 version;
&gt; +};
&gt; +
&gt;  /*
&gt;   * Common flags fields for MADT subtables
&gt;   */
&gt; --
&gt; 2.27.0
</chenhuacai@xxxxxxxxxxx></lvjianmin@xxxxxxxxxxx></lvjianmin@xxxxxxxxxxx></chenhuacai@xxxxxxxxxxx></jiaxun.yang@xxxxxxxxxxx></lixuefeng@xxxxxxxxxxx></erik.kaneda@xxxxxxxxx></robert.moore@xxxxxxxxx></lenb@xxxxxxxxxx></rjw@xxxxxxxxxxxxx></chenhuacai@xxxxxxxxxxx></lvjianmin@xxxxxxxxxxx></jiaxun.yang@xxxxxxxxxxx></lixuefeng@xxxxxxxxxxx></devel@xxxxxxxxxx></linux-acpi@xxxxxxxxxxxxxxx></erik.kaneda@xxxxxxxxx></lenb@xxxxxxxxxx></rjw@xxxxxxxxxxxxx></chenhuacai@xxxxxxxxxxx></robert.moore@xxxxxxxxx>




[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux