Re: HPET regression in 2.6.26 versus 2.6.25 -- found another userwith the same regression

From: Rufus & Azrael
Date: Sat Aug 23 2008 - 16:33:24 EST


Yinghai Lu wrote:
On Sat, Aug 23, 2008 at 1:15 PM, Rufus& Azrael
<rufus-azrael@xxxxxxxxxxxxxx> wrote:
Yinghai Lu wrote:
On Sat, Aug 23, 2008 at 12:40 PM, Rufus& Azrael
<rufus-azrael@xxxxxxxxxxxxxx> wrote:

Yinghai Lu wrote:

On Sat, Aug 23, 2008 at 11:26 AM, Rufus& Azrael
<rufus-azrael@xxxxxxxxxxxxxx> wrote:


On Sat, Aug 23, 2008 at 4:58 AM, David
Witbrodt<dawitbro@xxxxxxxxxxxxx>
wrote:


please send out after booting with hpet=disable
lspci -tv
lspci -vvxxx


Info attached:


00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 13)
Subsystem: Elitegroup Computer Systems Device 2621
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium>TAbort-
<TAbort-<MAbort->SERR-<PERR- INTx-
Region 0: I/O ports at fa00 [size=16]
Region 1: Memory at 80000000 (32-bit, non-prefetchable)
[size=1K]
Capabilities: [b0] HyperTransport: MSI Mapping Enable- Fixed+
Kernel driver in use: piix4_smbus
00: 02 10 85 43 03 04 30 02 13 00 05 0c 00 00 80 00
10: 01 fa 00 00 00 00 00 80 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 19 10 21 26
30: 00 00 00 00 b0 00 00 00 00 00 00 00 00 00 00 00
40: d4 3b 00 05 00 00 00 00 0f ff 00 00 00 00 00 00
50: f0 01 f0 0e f0 0f f0 07 11 0b f0 0f 00 00 00 00
60: 01 00 24 00 bf fd de 8f 3f 90 00 00 20 00 00 00
70: 00 01 00 00 08 00 c0 fe ff 6e 00 00 00 00 f0 0f
80: f0 0a f0 0f 00 00 00 00 00 00 00 00 8c 00 00 80
90: 01 fa 00 00 fa de ff 00 00 00 00 00 00 00 00 00
a0: 00 00 ff ff ff ff f0 08 ff fd 12 02 16 7b 20 00
b0: 08 00 02 a8 00 00 00 00 00 00 00 00 f0 0f 08 1a
c0: ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: d8 0c 00 00 00 00 44 00 00 00 00 00 aa 00 10 01
it seems kernel update BAR1 from 0xfed00000 to 0x80000000 after it can
not give 0xfed00000 to that device.
please try attached patch, and send out lspci -vvxxxx again.
YH
[PATCH] x86: protect hpet in BAR for one ATI chipset

so avoid kernel don't allocate nre resource for it because it can not
allocate the old
address from BIOS.

the same way like some IO APIC address in BAR handling

Signed-off-by: Yinghai Lu<yhlu.kenrel@xxxxxxxxx>

---
drivers/pci/quirks.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
Index: linux-2.6/drivers/pci/quirks.c
===================================================================
--- linux-2.6.orig/drivers/pci/quirks.c
+++ linux-2.6/drivers/pci/quirks.c
@@ -1918,6 +1918,22 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_B
PCI_DEVICE_ID_NX2_5709S,
quirk_brcm_570x_limit_vpd);

+static void __init quirk_hpet_in_bar(struct pci_dev *pdev)
+{
+ int i;
+ unsigned int base, size;
+
+ /* the BAR1 is the location of the HPET...we must
+ * not touch this, so forcibly insert it into the resource
tree
*/
+ base = pci_resource_start(pdev, 1);
+ size = pci_resource_len(pdev, 1);
+ if (base&& size) {
+ insert_resource(&iomem_resource,&pdev->resource[1]);
+ dev_info(&dev->dev, "HPET at %04x-%04x\n", name, base,
base + size - 1);
+ }
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x3485,
quirk_hpet_in_bar);
+
#ifdef CONFIG_PCI_MSI
/* Some chipsets do not support MSI. We cannot easily rely on setting
* PCI_BUS_FLAGS_NO_MSI in its bus flags because there are actually


Hi Yinghai,


Your patch seems to be broken, see :



CC drivers/pci/quirks.o
drivers/pci/quirks.c: In function 'quirk_hpet_in_bar':
drivers/pci/quirks.c:1804: erreur: 'dev' undeclared (first use in this
function)
drivers/pci/quirks.c:1804: erreur: (Each undeclared identifier is
reported
only once
drivers/pci/quirks.c:1804: erreur: for each function it appears in.)
drivers/pci/quirks.c:1804: erreur: 'name' undeclared (first use in
this
function)
drivers/pci/quirks.c:1804: attention : trop d'arguments pour le format
drivers/pci/quirks.c:1795: attention : unused variable 'i'
make[2]: *** [drivers/pci/quirks.o] Erreur 1


please check v2.

YH


Thanks Yinghai,

Your patch applied, I attach lspci -vvxxxx.

Regards.


00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 14)
Subsystem: Micro-Star International Co., Ltd. Device 7327
Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium>TAbort-
<TAbort-<MAbort->SERR-<PERR- INTx-
Region 0: I/O ports at 0b00 [size=16]
Capabilities: [b0] HyperTransport: MSI Mapping Enable- Fixed+
Kernel driver in use: piix4_smbus
00: 02 10 85 43 01 04 30 02 14 00 05 0c 00 00 80 00
10: 01 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 62 14 27 73
30: 00 00 00 00 b0 00 00 00 00 00 00 00 00 00 00 00
40: d4 2b 00 05 00 00 00 00 0f ff 00 00 00 00 00 00
50: 10 01 00 00 00 00 80 08 11 0b f0 0f 00 00 00 00
60: 01 00 24 00 bf fd 9e 83 3f 90 00 00 20 00 00 00
70: 00 01 00 00 08 00 c0 fe ff 2e 00 00 00 00 f0 0f
80: f4 0a f0 0f 00 00 00 00 00 00 00 00 8c 00 00 80
90: 01 0b 00 00 3b de ff 00 00 00 00 00 00 00 00 00
a0: 00 00 ff ff ff ff f0 08 02 f0 02 00 16 79 00 18
b0: 08 00 02 a8 00 00 00 00 00 00 00 00 f0 0f 08 1a
c0: ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: d8 0c 00 00 00 00 44 00 00 00 00 00 aa 00 10 01

bios didn't set HPET in BAR1?

YH


Yinghai,

How do I check this ?


it seems that you BIOS have HPET in acpi tables, but didn't set that
in BAR1 of 00:14.0

or BIOS have set one magic bit to hide BAR1 to OS.

please check if your hpet works. if so, we could have other quirks to
hide BAR1 for David's system.

YH

Yinghai,

I found these lines in dmesg :

[ 0.145977] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0
[ 0.145977] hpet0: 4 32-bit timers, 14318180 Hz

do you think hpet works ?

Regards.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/