RE: [PATCH] hpwdt: clean up set_memory_x call for 32 bit
From: Mingarelli, Thomas <hidden>
Date: 2012-01-26 00:02:47
Also in:
lkml
Yes I will do this before the end of the week. Tom -----Original Message----- From: Maxim Uvarov [mailto:maxim.uvarov@oracle.com] Sent: Wednesday, January 25, 2012 5:21 PM To: Mingarelli, Thomas Cc: Wim Van Sebroeck; Linus Torvalds; linux-kernel@vger.kernel.org; akpm@linux-foundation.org; stable@vger.kernel.org; dann frazier Subject: Re: [PATCH] hpwdt: clean up set_memory_x call for 32 bit Thomas, will you be able to test patch accoring to Linus's nr_page note? Maxim. On 01/24/2012 01:05 PM, Mingarelli, Thomas wrote:
Yes I agree that Maxim's patch is correct. The original set_memory_x call for 64 bit was done correctly and the newer calls are wrong. The 2 pages for the BIOS SD is a known value so it should be safe to use as is. Tom -----Original Message----- From: Wim Van Sebroeck [mailto:wim@iguana.be] Sent: Tuesday, January 24, 2012 2:38 PM To: Linus Torvalds Cc: Maxim Uvarov; linux-kernel@vger.kernel.org; akpm@linux-foundation.org; stable@vger.kernel.org; Mingarelli, Thomas; dann frazier Subject: Re: [PATCH] hpwdt: clean up set_memory_x call for 32 bit Hi Linus,quoted
So I don't know who is supposed to be handling this (Wim?), but the patch itself looks suspicious.I asked Tom to look at Maxim's patch and see what it does. Tom was going to look at the patch and I'm waiting on feedback from him first. (That's why I din't sent it upstream yet).quoted
On Sun, Jan 15, 2012 at 8:02 PM, Maxim Uvarov[off-list ref] wrote:quoted
- set_memory_x((unsigned long)bios32_entrypoint, (2 * PAGE_SIZE)); + set_memory_x((unsigned long)bios32_entrypoint& PAGE_MASK, 2);If it wasn't page-aligned to begin with, then maybe it needs three pages now?quoted
- set_memory_x((unsigned long)cru_rom_addr, cru_length); + set_memory_x((unsigned long)cru_rom_addr& PAGE_MASK, cru_length>> PAGE_SHIFT);Same here. If we align the start address down, we should fix up the length. And should we not align the number of pages up? In general, a "start/length" conversion to a "page/nr" model needs to be roughly len += start& ~PAGE_MASK; start&= PAGE_MASK; nr_pages = (len + PAGE_SIZE - 1)>> PAGE_SHIFT; to do things right. But I don't know where those magic numbers come from. Maybe the "2" is already due to the code possibly traversing a page boundary, and has already been fixed up. Somebody who knows the driver and the requirements should take a look at this.Valid comments indeed. Tom please take Linus comments with you when you look at the patch. Dan: I put you in Cc: also so that you can have a look at it also. Kind regards, Wim.