mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 07:31:29 +00:00
intel_th: msu: Preserve pre-existing buffer configuration
The MSU configuration registers may contain buffer address/size set by the BIOS or an external hardware debugger, which may want to take over tracing from the driver when the driver is not actively tracing. Preserve these settings when not actively tracing. Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20190705141425.19894-6-alexander.shishkin@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ed5207afc5
commit
092f47c383
@ -143,6 +143,8 @@ struct msc {
|
||||
unsigned int single_wrap : 1;
|
||||
void *base;
|
||||
dma_addr_t base_addr;
|
||||
u32 orig_addr;
|
||||
u32 orig_sz;
|
||||
|
||||
/* <0: no buffer, 0: no users, >0: active users */
|
||||
atomic_t user_count;
|
||||
@ -767,6 +769,9 @@ static int msc_configure(struct msc *msc)
|
||||
msc_buffer_clear_hw_header(msc);
|
||||
}
|
||||
|
||||
msc->orig_addr = ioread32(msc->reg_base + REG_MSU_MSC0BAR);
|
||||
msc->orig_sz = ioread32(msc->reg_base + REG_MSU_MSC0SIZE);
|
||||
|
||||
reg = msc->base_addr >> PAGE_SHIFT;
|
||||
iowrite32(reg, msc->reg_base + REG_MSU_MSC0BAR);
|
||||
|
||||
@ -841,8 +846,8 @@ static void msc_disable(struct msc *msc)
|
||||
|
||||
msc->enabled = 0;
|
||||
|
||||
iowrite32(0, msc->reg_base + REG_MSU_MSC0BAR);
|
||||
iowrite32(0, msc->reg_base + REG_MSU_MSC0SIZE);
|
||||
iowrite32(msc->orig_addr, msc->reg_base + REG_MSU_MSC0BAR);
|
||||
iowrite32(msc->orig_sz, msc->reg_base + REG_MSU_MSC0SIZE);
|
||||
|
||||
dev_dbg(msc_dev(msc), "MSCnNWSA: %08x\n",
|
||||
ioread32(msc->reg_base + REG_MSU_MSC0NWSA));
|
||||
|
Loading…
Reference in New Issue
Block a user