The git (2.6.25-git8 or something) kernel has PAT support. And if configuring kernel with CONFIG_X86_PAT=y one sees a lot of problems (like decreased performance
Here're some parts which might be relevant;
[ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[ 0.236008] x86 PAT enabled: cpu 1, old 0x7040600070406, new 0x7010600070106
....
[ 0.240752] PCI: BIOS Bug: MCFG area at c0000000 is not E820-reserved
[ 0.240802] PCI: Not using MMCONFIG.
[ 0.240847] PCI: Using configuration type 1
[ 0.245614] ACPI: EC: EC description table is found, configuring boot EC
[ 0.260199] ACPI: Interpreter enabled
[ 0.260201] ACPI: (supports S0 S1 S3 S4 S5)
[ 0.260216] ACPI: Using IOAPIC for interrupt routing
[ 0.261731] ACPI: Error attaching device data
[ 0.261812] ACPI: Error attaching device data
This messes with MTRR, dunno if it affects PAT too. This was already there with the previous (aka no-PAT) kernels.
And here's the part of dmesg where fglrx gets confused with PATH:
21.470803] Symbol init_mm is marked as UNUSED, however this module is using it.
[ 21.470805] This symbol will go away in the future.
[ 21.470806] Please evalute if this is the right api to use, and if it really is, submit a report the linux kernel mailinglist togethe
r with submitting your code for inclusion.
[ 21.480375] [fglrx] Maximum main memory to use for locked dma buffers: 3808 MBytes.
[ 21.480398] [fglrx] ASYNCIO init succeed!
[ 21.480400] [fglrx:KCL_enable_pat] *ERROR* Pat entry 2 is already configured
[ 21.480402] [fglrx] PAT is disabled!
[ 21.480417] [fglrx] module loaded - fglrx 8.47.3 [Mar 29 2008] on minor 0
At firegl_public.c in function static int ATI_API_CALL KCL_enable_pat(void) there's a loop which bails out if PAT is already enabled and exits.
for ( i = 0; i < 2; i++ )
{
for (j = 0; j < 4; j ++)
{
if (((KCL_orig_pat[i] >> (j * 8)) & 0xFF) == 1)
{
__KE_ERROR("Pat entry %d is already configured\n", (i+1)*(j+1));
return 0;
}
}
}
I really don't have any idea why i goes from 0 to 1 and j from 0 to 3. I's just wondering maybe it shouldn't exit if some parts of PAT is already configured by kernel?
So I just need to try if it's safe to call KCL_setup_pat even if PAT is already on
I wonder if there is any documentation available for this PAT thing somewhere...
Here're some parts which might be relevant;
[ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[ 0.236008] x86 PAT enabled: cpu 1, old 0x7040600070406, new 0x7010600070106
....
[ 0.240752] PCI: BIOS Bug: MCFG area at c0000000 is not E820-reserved
[ 0.240802] PCI: Not using MMCONFIG.
[ 0.240847] PCI: Using configuration type 1
[ 0.245614] ACPI: EC: EC description table is found, configuring boot EC
[ 0.260199] ACPI: Interpreter enabled
[ 0.260201] ACPI: (supports S0 S1 S3 S4 S5)
[ 0.260216] ACPI: Using IOAPIC for interrupt routing
[ 0.261731] ACPI: Error attaching device data
[ 0.261812] ACPI: Error attaching device data
This messes with MTRR, dunno if it affects PAT too. This was already there with the previous (aka no-PAT) kernels.
And here's the part of dmesg where fglrx gets confused with PATH:
21.470803] Symbol init_mm is marked as UNUSED, however this module is using it.
[ 21.470805] This symbol will go away in the future.
[ 21.470806] Please evalute if this is the right api to use, and if it really is, submit a report the linux kernel mailinglist togethe
r with submitting your code for inclusion.
[ 21.480375] [fglrx] Maximum main memory to use for locked dma buffers: 3808 MBytes.
[ 21.480398] [fglrx] ASYNCIO init succeed!
[ 21.480400] [fglrx:KCL_enable_pat] *ERROR* Pat entry 2 is already configured
[ 21.480402] [fglrx] PAT is disabled!
[ 21.480417] [fglrx] module loaded - fglrx 8.47.3 [Mar 29 2008] on minor 0
At firegl_public.c in function static int ATI_API_CALL KCL_enable_pat(void) there's a loop which bails out if PAT is already enabled and exits.
for ( i = 0; i < 2; i++ )
{
for (j = 0; j < 4; j ++)
{
if (((KCL_orig_pat[i] >> (j * 8)) & 0xFF) == 1)
{
__KE_ERROR("Pat entry %d is already configured\n", (i+1)*(j+1));
return 0;
}
}
}
I really don't have any idea why i goes from 0 to 1 and j from 0 to 3. I's just wondering maybe it shouldn't exit if some parts of PAT is already configured by kernel?
So I just need to try if it's safe to call KCL_setup_pat even if PAT is already on
I wonder if there is any documentation available for this PAT thing somewhere...
Comment