On Monday 23 June 2014 15:46:08 Ashwin Chaugule wrote:
Hello,
On 23 June 2014 15:10, Arnd Bergmann arnd@arndb.de wrote:
Fair point. The more I think about this, it seems that if we want to use the mailbox framework for ACPI kernels, we should have a PCC specific bypass, something like the one you suggested below. The ACPI spec defines PCC as the only "mailbox" like mechanism. There are 3 PCC clients defined as well; CPPC, MPST and RASF. Each of these have their own ACPI tables and so they dont require special DSDT entries.
Ok, I see. Can you describe what data is in these tables?
For CPPC, its a field for version number, number of entries and then followed by a bunch of PCC entries that have the following structure:
51 struct pcc_register_resource { 52 u8 descriptor; 53 u16 length; 54 u8 space_id; 55 u8 bit_width; 56 u8 bit_offset; 57 u8 access_size; 58 u64 address; 59 } __attribute__ ((packed));
These essentially describe the PCC register space to be used by the respective protocol. e.g. CPPC uses these to exchange CPU performance metrics between the OS and the firmware. I believe MPST and RASF also follow the same format.
Interesting. So I guess it's one entry per client of the PCC? How exactly does the client know which index to use in this table?
Arnd