From patchwork Wed May 15 22:33:08 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Helgaas X-Patchwork-Id: 244195 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id DC0942C009C for ; Thu, 16 May 2013 08:33:42 +1000 (EST) Received: from localhost ([::1]:52521 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UckGS-0001sD-Sy for incoming@patchwork.ozlabs.org; Wed, 15 May 2013 18:33:40 -0400 Received: from eggs.gnu.org ([208.118.235.92]:41807) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UckG6-0001s2-Vb for qemu-devel@nongnu.org; Wed, 15 May 2013 18:33:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UckFz-0004ud-89 for qemu-devel@nongnu.org; Wed, 15 May 2013 18:33:18 -0400 Received: from mail-ia0-x232.google.com ([2607:f8b0:4001:c02::232]:58767) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UckFz-0004sH-2O for qemu-devel@nongnu.org; Wed, 15 May 2013 18:33:11 -0400 Received: by mail-ia0-f178.google.com with SMTP id i9so2656961iad.23 for ; Wed, 15 May 2013 15:33:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:subject:to:from:cc:date:message-id:user-agent :mime-version:content-type:content-transfer-encoding; bh=KwMDZ0nG2W0EyU0fOllHL1scEBOPuo/G82wywz92oAs=; b=fonRLsKiYkYKwI9NklRCyRrCc1n+g7wB3MzMhwQIKcYQFxBWAcVVFG2SHxdZLv/yLk Ppf34sxbb10wS1YipGsKhRnpPQTz0wPV1WEsX7ws9OfREK+RY9kefd5p2c6MOSt0bk/q XF1ICGYVN6hkGq676o4UzlA2ClCQ/EkoBuzASv+o4fCWgMMYHqngPoqdWk4cMPGwSHXS mrbmwsmcHcrZdZD/P0R+6QGreWKW3KwcyHS/Tqd44S7/+hWSQBYEMG4Nv9bymCoZy12j IVf5hijVUVAZ8hemdw97QV+Vtzk6m7MUGFFWE/zHVgkACg9+jEMm3RtlUG29UvIzyrZR cxcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:subject:to:from:cc:date:message-id:user-agent :mime-version:content-type:content-transfer-encoding :x-gm-message-state; bh=KwMDZ0nG2W0EyU0fOllHL1scEBOPuo/G82wywz92oAs=; b=mHdPlluyn1lF6Kl25MiJnPVPnYX9Y78if5+r30Rk3n7MaP5ai9fviYPgP6ot05aBrO EZZ1yZYCBFTdANwz5J8CQHQRBmFub7hG205H8qujFnX1aXeHOXlGMqEd5DGV+7KgoYuL upF+X9gtEYkr2pTPtVjpDtn4qUINF+1mQpxiq4qLXdrKiyS1X/grykCI/7UzC0W91Bk1 KR9l24IVhWQJEB093zEyXadvfSjFI6ax+nSLfuUCWzSj+xsX5IKDX4/YCbkUnKXPEXoP EOVsxvUCT3J9cM3pz5lZhpSYdGMgJpKhT4UdyqDzWBq2rk0zQHw3OR0F8Kqx2TPMoAKs gVTw== X-Received: by 10.50.88.4 with SMTP id bc4mr7015090igb.22.1368657190140; Wed, 15 May 2013 15:33:10 -0700 (PDT) Received: from localhost ([172.16.50.163]) by mx.google.com with ESMTPSA id l14sm6853188igf.9.2013.05.15.15.33.08 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 15 May 2013 15:33:09 -0700 (PDT) To: "Michael S. Tsirkin" From: Bjorn Helgaas Date: Wed, 15 May 2013 16:33:08 -0600 Message-ID: <20130515223308.11335.86381.stgit@bhelgaas-glaptop> User-Agent: StGit/0.16 MIME-Version: 1.0 X-Gm-Message-State: ALoCoQnViQx27I0JXzhM8a51J1OQkdSN0RyFwszBWBwuNIeEkiGKuXJrwKn4NDByX7lusLNq1QOz1KgrXLdw8MYzai9Xi86J850VApyF7gaZh+BvZUGyag8FxbtqpPOCp/wM/B22QdTMg2y1v7/QU6QavdZqHVgyJj1v1N+ubQbfEdQgd4iQInRoB5IRsIVVj2mADz6b6P/t X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:4001:c02::232 Cc: qemu-devel@nongnu.org Subject: [Qemu-devel] [PATCH] pcie: Add more ASPM support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Indicate ASPM L0s and L1 support in Link Capabilities and make the ASPM bits in Link Control writable. These Link Control bits don't do anything in qemu, but having them writable means the BIOS or OS can write them as on real hardware. Signed-off-by: Bjorn Helgaas --- hw/pci/pcie.c | 4 +++- include/hw/pci/pcie_regs.h | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index 62bd0b8..7336054 100644 --- a/hw/pci/pcie.c +++ b/hw/pci/pcie.c @@ -73,13 +73,15 @@ int pcie_cap_init(PCIDevice *dev, uint8_t offset, uint8_t type, uint8_t port) pci_set_long(exp_cap + PCI_EXP_LNKCAP, (port << PCI_EXP_LNKCAP_PN_SHIFT) | - PCI_EXP_LNKCAP_ASPMS_0S | + PCI_EXP_LNKCAP_ASPMS_0S | PCI_EXP_LNKCAP_ASPMS_1 | PCI_EXP_LNK_MLW_1 | PCI_EXP_LNK_LS_25); pci_set_word(exp_cap + PCI_EXP_LNKSTA, PCI_EXP_LNK_MLW_1 | PCI_EXP_LNK_LS_25); + pci_set_word(dev->wmask + pos + PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_ASPM); + pci_set_long(exp_cap + PCI_EXP_DEVCAP2, PCI_EXP_DEVCAP2_EFF | PCI_EXP_DEVCAP2_EETLPP); diff --git a/include/hw/pci/pcie_regs.h b/include/hw/pci/pcie_regs.h index 4d123d9..6b80a8d 100644 --- a/include/hw/pci/pcie_regs.h +++ b/include/hw/pci/pcie_regs.h @@ -31,7 +31,7 @@ #define PCI_EXP_FLAGS_TYPE_SHIFT (ffs(PCI_EXP_FLAGS_TYPE) - 1) -/* PCI_EXP_LINK{CAP, STA} */ +/* PCI_EXP_LINK{CAP, STA, CTL} */ /* link speed */ #define PCI_EXP_LNK_LS_25 1 @@ -41,9 +41,12 @@ /* PCI_EXP_LINKCAP */ #define PCI_EXP_LNKCAP_ASPMS_SHIFT (ffs(PCI_EXP_LNKCAP_ASPMS) - 1) #define PCI_EXP_LNKCAP_ASPMS_0S (1 << PCI_EXP_LNKCAP_ASPMS_SHIFT) +#define PCI_EXP_LNKCAP_ASPMS_1 (2 << PCI_EXP_LNKCAP_ASPMS_SHIFT) #define PCI_EXP_LNKCAP_PN_SHIFT (ffs(PCI_EXP_LNKCAP_PN) - 1) +#define PCI_EXP_LNKCTL_ASPM 0x0003 + #define PCI_EXP_SLTCAP_PSN_SHIFT (ffs(PCI_EXP_SLTCAP_PSN) - 1) #define PCI_EXP_SLTCTL_IND_RESERVED 0x0