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

Rafał Bilski
2006-07-01T18:03:08Z

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