On Tue, Dec 19, 2017 at 12:34:46AM +0100, Javier Martinez Canillas wrote: > Hello Jason, > > On 12/18/2017 09:19 PM, Jason Gunthorpe wrote: > > On Mon, Dec 18, 2017 at 07:34:29PM +0000, Shaikh, Azhar wrote: > > > >>> IIUC, if CLKRUN_EN is enabled, then all the devices attached to the > >>> LPC bus have to support the CLKRUN protocol. My guess is that on > >>> some Braswell systems LPC power management is enabled but the TPM > >>> device doesn't have CLKRUN support. > >> > >> I think this is what might be happening here. > > > > That makes it a BIOS bug, not a chipset bug, and we shouldn't be > > trying to fix it like this in Linux. > > > > Indeed, the system integrator should make sure that all peripherals that > are connected through the LPC bus either support the CLKRUN protocol and > CLKRUN_EN is enabled or CLKRUN_EN should be disabled. > > > Based on the original discussion I always thought this was an Intel > > chipset bug and applies to all cases. > > > > After thinking about this and with a better understanding of the issue, > I think we have 2 options (please let me know if I got something wrong): > > 1) Leave the code as is and apply the patch I shared with James. In that > case the CLKRUN protocol will be disabled only during TPM transactions > and not enabled again after transactions if it wasn't enabled. > > This shouldn't affect other peripherals since even if they have CLKRUN > support, they should work correctly while CLKRUN protocol is disabled. > > The disadvantage is that TPM devices that have CLKRUN support (do they > exist?) will not take the advantage of the power management feature of > stopping the LPC host LCLK clock during low-power states. CLKRUN is enabled after TPM has processed the command so how this could make power mgmt worse? /Jarkko