lkml.org 
[lkml]   [2007]   [Jul]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [patch 5/6] ps3: BD/DVD/CD-ROM Storage Driver
    On Fri, 13 Jul 2007, Geert Uytterhoeven wrote:
    > Ah, that explains it. flush_dcache_page() is used in some drivers.
    > I'll update my patches. Thanks for the comments!

    Does this look OK?
    - Replaced KM_USER0 by KM_IRQ0 (all routines are either called from an
    interrupt handler, from .request_fn (ps3disk), or from .queuecommand
    (ps3rom))
    - Add a call to flush_kernel_dcache_page() in routines that write to buffers

    If this is OK, I'll fold it into my original patch series and will resend.

    Thanks!

    ---
    drivers/block/ps3disk.c | 5 +++--
    drivers/scsi/ps3rom.c | 9 +++++----
    2 files changed, 8 insertions(+), 6 deletions(-)

    --- a/drivers/block/ps3disk.c
    +++ b/drivers/block/ps3disk.c
    @@ -109,13 +109,14 @@ static void ps3disk_scatter_gather(struc
    bio_sectors(bio), sector);
    bio_for_each_segment(bvec, bio, j) {
    size = bio_cur_sectors(bio)*KERNEL_SECTOR_SIZE;
    - buf = __bio_kmap_atomic(bio, j, KM_USER0);
    + buf = __bio_kmap_atomic(bio, j, KM_IRQ0);
    if (gather)
    memcpy(dev->bounce_buf+offset, buf, size);
    else
    memcpy(buf, dev->bounce_buf+offset, size);
    offset += size;
    - __bio_kunmap_atomic(bio, KM_USER0);
    + flush_kernel_dcache_page(bio_iovec_idx(bio, j)->bv_page);
    + __bio_kunmap_atomic(bio, KM_IRQ0);
    }
    sectors += bio_sectors(bio);
    i++;
    --- a/drivers/scsi/ps3rom.c
    +++ b/drivers/scsi/ps3rom.c
    @@ -112,7 +112,7 @@ static int fill_from_dev_buffer(struct s
    active = 1;
    for (k = 0, req_len = 0, act_len = 0; k < cmd->use_sg; ++k, ++sgpnt) {
    if (active) {
    - kaddr = kmap_atomic(sgpnt->page, KM_USER0);
    + kaddr = kmap_atomic(sgpnt->page, KM_IRQ0);
    if (!kaddr)
    return -1;
    len = sgpnt->length;
    @@ -121,7 +121,8 @@ static int fill_from_dev_buffer(struct s
    len = buflen - req_len;
    }
    memcpy(kaddr + sgpnt->offset, buf + req_len, len);
    - kunmap_atomic(kaddr, KM_USER0);
    + flush_kernel_dcache_page(sgpnt->page);
    + kunmap_atomic(kaddr, KM_IRQ0);
    act_len += len;
    }
    req_len += sgpnt->length;
    @@ -149,7 +150,7 @@ static int fetch_to_dev_buffer(struct sc

    sgpnt = cmd->request_buffer;
    for (k = 0, req_len = 0, fin = 0; k < cmd->use_sg; ++k, ++sgpnt) {
    - kaddr = kmap_atomic(sgpnt->page, KM_USER0);
    + kaddr = kmap_atomic(sgpnt->page, KM_IRQ0);
    if (!kaddr)
    return -1;
    len = sgpnt->length;
    @@ -158,7 +159,7 @@ static int fetch_to_dev_buffer(struct sc
    fin = 1;
    }
    memcpy(buf + req_len, kaddr + sgpnt->offset, len);
    - kunmap_atomic(kaddr, KM_USER0);
    + kunmap_atomic(kaddr, KM_IRQ0);
    if (fin)
    return req_len + len;
    req_len += sgpnt->length;
    With kind regards,

    Geert Uytterhoeven
    Software Architect

    Sony Network and Software Technology Center Europe
    The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium

    Phone: +32 (0)2 700 8453
    Fax: +32 (0)2 700 8622
    E-mail: Geert.Uytterhoeven@sonycom.com
    Internet: http://www.sony-europe.com/

    Sony Network and Software Technology Center Europe
    A division of Sony Service Centre (Europe) N.V.
    Registered office: Technologielaan 7 · B-1840 Londerzeel · Belgium
    VAT BE 0413.825.160 · RPR Brussels
    Fortis Bank Zaventem · Swift GEBABEBB08A · IBAN BE39001382358619
    \
     
     \ /
      Last update: 2007-07-16 13:45    [W:4.212 / U:0.412 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site