Re: [PATCH] (Longhaul 1/5) PCI: Protect bus master DMA from Longhaulby rw semaphores

From: Rafał Bilski
Date: Sat Jul 01 2006 - 14:01:52 EST


>
> That really is a rather horrible design on their part. Who the hell at
> VIA thought this was a good idea?
>

I have asked them. Answer is: support is in north/south bridge.
This code works fine (of course "clear BM bit for each device" removed):
[...]
cx = &pr->power.states[ACPI_STATE_C3];
printk("Begin..\n"); /* Just to be sure */
preempt_disable();
local_irq_save(flags);
[...]
safe_halt(); /* Sync */

ACPI_FLUSH_CPU_CACHE();

wrmsrl(MSR_VIA_LONGHAUL, longhaul->val);
/* Invoke C3 */
inb(cx->address);
/* Dummy op - must do something useless after P_LVL3 read */
t2 = inl(acpi_fadt.xpm_tmr_blk.address);

local_irq_disable();
[...]
printk("..End\n");

30 min "hdparm -t", frequency changes at 1s interval.
CPU temperature is changing too.
Checked in Bashmark.

THIS IS WORKING.


------------------------------------------------------------------------
Najkrótsza trasa na wakacje: http://map24.interia.pl

-
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/