From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753500AbdGCJKv (ORCPT ); Mon, 3 Jul 2017 05:10:51 -0400 Received: from mailout1.hostsharing.net ([83.223.95.204]:40229 "EHLO mailout1.hostsharing.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753391AbdGCJKu (ORCPT ); Mon, 3 Jul 2017 05:10:50 -0400 Date: Mon, 3 Jul 2017 11:10:48 +0200 From: Lukas Wunner To: Ethan Zhao Cc: Chen Yu , Bjorn Helgaas , linux-pci , LKML , thejoe@gmail.com, "Rafael J. Wysocki" Subject: Re: [PATCH] PCI: Work around poweroff & suspend-to-RAM issue on Macbook Pro 11 Message-ID: <20170703091048.GA15823@wunner.de> References: <20170702205948.GB18324@bhelgaas-glaptop.roam.corp.google.com> <20170703042621.GA22429@yu-desktop-1.sh.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jul 03, 2017 at 02:33:39PM +0800, Ethan Zhao wrote: > On Mon, Jul 3, 2017 at 12:26 PM, Chen Yu wrote: > > On Sun, Jul 02, 2017 at 03:59:48PM -0500, Bjorn Helgaas wrote: > >> --- a/arch/x86/pci/fixup.c > >> +++ b/arch/x86/pci/fixup.c [snip] > >> +static void quirk_apple_mbp_poweroff(struct pci_dev *pdev) > >> +{ > >> + struct device *dev = &pdev->dev; > >> + struct resource *res; > >> + > >> + if ((!dmi_match(DMI_PRODUCT_NAME, "MacBookPro11,4") && > >> + !dmi_match(DMI_PRODUCT_NAME, "MacBookPro11,5")) || > >> + pdev->bus->number != 0 || pdev->devfn != PCI_DEVFN(0x1c, 0)) > >> + return; > >> + > > Not sure why we need to also the bus number of devfn, as there > > is only one PCI bridge that would match 0x8c10? according to > > https://bugzilla.kernel.org/attachment.cgi?id=210611 > > am I missing something? > > To make sure it runs only once only when 00:1c.0 is 0x8c10 ? Each root port has a different PCI device ID and is only present once on the affected machines, so I think Chen Yu is right. Actually, since the quirk is now related to a memory region and no longer to a specific PCI device, it need not be a PCI fixup. It could go into arch/x86/kernel/setup.c:trim_platform_memory_ranges() as a DMI quirk. This would also allow declaration of the code as __init. Thanks, Lukas > >> + res = request_mem_region(0x7fa00000, 0x200000, > >> + "MacBook Pro poweroff workaround"); > >> + if (res) > >> + dev_info(dev, "claimed %s %pR\n", res->name, res); > >> + else > >> + dev_info(dev, "can't work around MacBook Pro poweroff issue\n"); > >> +} > >> +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x8c10, quirk_apple_mbp_poweroff);